如何编写将返回的函数:可观察的。
我的服务:
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)
如何更正密码?
如何编写将返回的函数:可观察的。
答案 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); }