Angular 如何以异步方式删除/更新以及何时取消订阅?

Angular 如何以异步方式删除/更新以及何时取消订阅?,angular,rxjs,Angular,Rxjs,我现在是个有棱角的新手 async pipe的主要目标之一是自动处理订阅和取消订阅 1. 当处理删除或更新(两者都是API服务)时,我是否需要通过Ngondestory取消订阅 projects$: Observable<Project[]>; constructor( private projectService: ProjectService, ) { } ngOnInit() { this.loadProject(); } loadProject(

我现在是个有棱角的新手

async pipe的主要目标之一是自动处理订阅和取消订阅

1. 当处理删除或更新(两者都是API服务)时,我是否需要通过Ngondestory取消订阅

projects$: Observable<Project[]>;

constructor(
    private projectService: ProjectService,
) { }

ngOnInit() {
    this.loadProject();
}   


loadProject(){
    this.projects$ = this.projectService.getProjects()
    .pipe(
        map(result => {
            if(result.success){
                return result.data;
            }
        })
    );
}


deleteProject(){
    if(this.projectToDelete){
        const id = this.projectToDelete.id;
        this.projectService.deleteProject(id).subscribe(result => {
            if(result.success){
                this.loadProject();
            }
        });
    }
}

这实际上取决于您的需求,但您可以始终使用
async
管道,该管道将通过
subscribing
unsubscribing
为您处理可观察对象的生命周期

-您可以使用一些RxJS操作符来为您处理
取消订阅
。像
take(1)
first()
of()
from()

-如你所说,取消订阅NGD

而且,销毁不是一件可以观察到的事情,你要么
取消订阅
完成
,要么两者兼而有之

在反应式编程中,最好使用声明式方法

等等,那是什么

testObject$ = this.http.get(url).pipe(
      map((resp: any) => 
           ({
            id: resp.data.id,
            view: resp.data.view,
            resourceName: resp.data.resourcename,
            loadCapacity: resp.data.loadcapacity
          }) as TestObject)
      );

  }
你知道我做了什么吗?我删除了这个方法

然后在您的组件中,将其称为
testService.testObject$

你看我做了什么,我放弃了这个方法,原因如下:

  • -利用rxjs可观测和操作员的能力
  • -有效兼容的流
  • -易共享的可观测数据
  • -随时对用户操作作出反应
  • testObject$ = this.http.get(url).pipe(
          map((resp: any) => 
               ({
                id: resp.data.id,
                view: resp.data.view,
                resourceName: resp.data.resourcename,
                loadCapacity: resp.data.loadcapacity
              }) as TestObject)
          );
    
      }