可观察变量的Angular2 Observable.forkJoin-ReferenceError:未定义可观察

富野

我想请你帮忙。我省略了我认为不重要的代码。让我们想象一下包含服务调用的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章