我想请你帮忙。我省略了我认为不重要的代码。让我们想象一下包含服务调用的TS文件:
//文件:someService.ts
@Injectable()
export class SomeService {
method1(){
var observable = this.http.get(someUrl)
.map((res: Response) =><MyClass[]>res.json());
return observable;
}
method2(){
// Similar to method1
}
}
//文件:someComponent.ts
请注意,this.method1observable和method2observable是从父(根)组件正确分配的,其类型是Observable。
import {Observable} from 'rxjs/Observable';
export class SomeClass {
public m1: Observable<MyClass[]>;
public m2: Observable<AnotherClass[]>
ngOnInit() {
Observable.forkJoin(this.m1,this.m2) //<- ERROR HERE
.subscribe(data => {
this.myFunction(data[0], data[1]);
requestAnimationFrame(this.renderLoop);
});
}
}
我收到“未捕获的ReferenceError:未定义Observable”。你不知道我在做什么错吗?我看到了一些在服务内部调用Observable.forkJoin的示例。但是,如果我想在组件内部调用它怎么办?
您可以尝试以这种方式导入:
import {Observable} from 'rxjs/Rx';
代替:
import {Observable} from 'rxjs/Observable';
您还应该使用数组为forkJoin方法提供可观察对象:
ngOnInit() {
Observable.forkJoin([this.m1,this.m2])
.subscribe(data => {
this.myFunction(data[0], data[1]);
requestAnimationFrame(this.renderLoop);
});
}
并且不要忘记在@Component中指定输入:
@Component({
inputs: ['m1', 'm2']
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句