如何编写将返回的函数:Observable <ModelTemp>

时间:2019-06-24 15:50:23

标签: angular angular7

如何编写将返回的函数:可观察的。

我的服务:

 modelTemp= [{ 
    name: 'abcdefghijk'
 }];   
 get(): Observable<ModelTemp> {
    return this.modelTemp;
 }

在使用中,该方法的变量显示为红色:

返回的表达式类型{name:string} []不可分配为Observable less ...(Ctrl + F1)类型 检查TypeScript称为函数参数,返回值,分配的表达式的类型正确

如何解决此错误?

我的组件:

 model: ModelTemp; 

    constructor(private getService: GetService) {}
    ngOnInit() {
      this.generate();
    }

    generate() {
      this.getService.get()
        .subscribe((modelData) => { 
          this.model = modelData;
        });
    }

我的界面:

   export interface ModelTemp {
      name: string; 
   }

我不知道我在哪里犯错。应该以不同的方式声明模型组件(以这种方式):     modelPage:ModelPage; 或者:     modelPage:ModelPage [];

在我的浏览器中,我返回一个错误:

this.getService.get(...)。subscribe不是TempComponent.push ../ src / app / temp / temp.component.ts.TempComponent.generate的函数。 < / p>

我想使用订阅方法。哪个将返回模型(接口ModelTemp)

如何更正密码?

如何编写将返回的函数:可观察的。

4 个答案:

答案 0 :(得分:2)

使用rxjs of 返回一个Observable

import {of} from 'rxjs';

 get(): Observable<ModelTemp> {
  return of(this.modelTemp);
} 

答案 1 :(得分:0)

您可以尝试以下操作:

modelTemp: BehaviorSubject<ModelTemp[]> = new BehaviorSubject([{ 
    name: 'abcdefghijk'
}]);

get(): BehaviorSubject <ModelTemp[]> {
    return this.modelTemp;
}

这将返回您可以订阅的主题。

答案 2 :(得分:0)

这取决于您需要对可观察结果进行何种控制。

  • 如果仅需要满足已知数据在可观察范围内的要求,则Fateh Mohamed具有返回of(this.modelTemp)的正确想法。

  • 但是,如果您需要在ModelTemp数组更改时发出将来的值,那么German Burgardt会更好,因为可以为您提供一个可以调用behaviorSubject.next(newModelTemp)的Subject,它将向订阅您的Behavior Subject的任何人。您可能还希望通过仅返回behaviorSubject.asObservable()的结果并保持行为主体本身的私密性,来防止其他调用者从此行为主体发出。

  • 最后,如果ModelTemp数组包含一组应由可观察对象连续发射的值,请使用from(this.modelTemp)

答案 3 :(得分:0)

方法:page.title将重置错误:get(): Observable<ModelTemp> { return of(this.modelTemp); }