角度:不建议创建:改用new Observable()

mru*_*ova 8 angular-material angular angular7

我最近在使用ng update 和运行时更新了我的angular版本ng lint

我收到错误 create is deprecated: use new Observable() instead

this.data$ = Observable.create(t => {
    t.next(this.model);
    t.complete();
});
Run Code Online (Sandbox Code Playgroud)

new observable的语法是什么?

Ani*_*aha 17

2021 年有所改变。

new Observable((observer: Observer<object>) => {
    observer.next(data);
}); 
Run Code Online (Sandbox Code Playgroud)

代替

new Observable((observer: Observer) => {
    observer.next();
    observer.complete();
});
Run Code Online (Sandbox Code Playgroud)


Ser*_*gey 13

很简单

this.data$ = new Observable((observer: Observer) => {
  observer.next();
  observer.complete();
});
Run Code Online (Sandbox Code Playgroud)

  • 您还应该能够使用`of()`。 (2认同)
  • @OneLunchMan这是不一样的。如果使用`of()`,它只会发出值。但是,`of()`的功能不如创建一个Observable的功能。在那里你可以放置一个复杂的逻辑 (2认同)
  • @OneLunchMan不是那么简单:)。当使用`of`时,会生成带有值的.next`,但是,如果创建一个可观察对象,则可以对事件做出反应,然后将一些数据传递给订阅者,以及可以计算这些订阅者等。 (2认同)

Abe*_*dez 5

或者你可以只使用

this.data$ = of(this.model);
Run Code Online (Sandbox Code Playgroud)


Muh*_*lal 5

observableSubscription: Subscription;
Run Code Online (Sandbox Code Playgroud)

创建自定义 Observable

const observer = new Observable((observer: Observer) => {
   observer.next();
   observer.error();
   observer.complete();
});
Run Code Online (Sandbox Code Playgroud)

订阅自定义 Observable

this.observableSubscription = observer.subscribe((data:any) => {
   console.log(data);
})
Run Code Online (Sandbox Code Playgroud)

退订

this.observableSubscription.unsubscribe();
Run Code Online (Sandbox Code Playgroud)