Angular 我在这里有一个组件,用于订阅和订阅后方法以及取消订阅方法,以避免内存泄漏
服务代码Angular 我在这里有一个组件,用于订阅和订阅后方法以及取消订阅方法,以避免内存泄漏,angular,rxjs-observables,Angular,Rxjs Observables,服务代码 private posts: Post[] = []; private postsupdated = new Subject<Post[]>(); getPost() { return [...this.posts] } getPostsUpdatedListener() { return this.postsupdated.asObservable() } addPosts(title: String, content: Stri
private posts: Post[] = [];
private postsupdated = new Subject<Post[]>();
getPost() {
return [...this.posts]
}
getPostsUpdatedListener() {
return this.postsupdated.asObservable()
}
addPosts(title: String, content: String) {
const post: Post = { title: title, content: content }
this.posts.push(post)
this.postsupdated.next([...this.posts])
}
constructor() { }
Posts: Post[] = [];
private postsSub = Subscription;
ngOnInit(): void {
this.Posts = this.postService.getPost();
this.postsSub = this.postService.getPostsUpdatedListener()
.subscribe((posts: Post[]) => {
this.Posts = posts
})
}
ngOnDestroy() {
this.postsSub.unsubscribe();
}
类型“订阅”缺少类型“订阅类型”中的以下属性:原型、空和
类型“typeof Subscription”上不存在属性“Unsubscripte”。如何解决此问题?您正在分配postsSub,而不是声明类型
private postsub:订阅代码>
重写了一些代码:
//Service
private _posts$ = new BehaviourSubject<Post[]>([]);
posts$ = this.posts.asObservable();
addPosts(title: String, content: String) {
const post: Post = { title: title, content: content };
this._posts$.next([...this._posts$.getValue(), post])
}
// component
posts$ = this.postService.posts$;
_destroy$ = new Subject();
ngOnInit(): void {
// just for example, recommend using an async pipe in the template
this.posts$.pipe(takeUntil(this._destroy$))
.subscribe((posts: Post[]) => {
// do whatever
})
}
ngOnDestroy() {
this._destroy$.next();
}
//服务
私人_posts$=新行为主体([]);
posts$=this.posts.asObservable();
addPosts(标题:String,内容:String){
const post:post={title:title,content:content};
this.\u发布$.next([…this.\u发布$.getValue(),post])
}
//组成部分
posts$=this.postService.posts$;
_销毁$=新主题();
ngOnInit():void{
//例如,建议在模板中使用异步管道
this.posts$.pipe(takeUntil(this.\u destroy$))
.订阅((posts:Post[])=>{
//做任何事
})
}
恩贡德斯特罗(){
这个。_销毁$.next();
}