Angular 如何从resolve函数返回两个不同的Observable并将其订阅到组件中

Angular 如何从resolve函数返回两个不同的Observable并将其订阅到组件中,angular,angular7,Angular,Angular7,我试图从route.ts中的on resolve函数返回两个不同类型的可观测值,并希望在Component.ts中订阅该可观测值,但其显示未定义的响应。 我也试过这个链接 路线1.ts @Injectable({ providedIn: 'root' }) export class View360Resolve implements Resolve<any> { constructor(private service: View360Service) { } re

我试图从route.ts中的on resolve函数返回两个不同类型的可观测值,并希望在Component.ts中订阅该可观测值,但其显示未定义的响应。 我也试过这个链接

路线1.ts

@Injectable({ providedIn: 'root' })
export class View360Resolve implements Resolve<any> {

    constructor(private service: View360Service) { }

    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {
        const id = route.params['id'] ? route.params['id'] : null;
        if (id) {
            var view360: View360;
            var view360_2: View360_2;

            var respp = this.service.findView360_2(1).pipe(
                filter((response: HttpResponse<View360_2>) => response.ok),
                map((View360_2: HttpResponse<View360_2>) => View360_2.body)
            );

            var resp = this.service.find(id).pipe(
                filter((response: HttpResponse<View360>) => response.ok),
                map((view360: HttpResponse<View360>) => view360.body)
            );

            return forkJoin([
                respp,
                resp]);

            }
        return forkJoin([
            of(new View360_2()),
            of(new View360())]);
    }
}
this.view360_2和this.view360两个对象都显示未定义的数据。请帮助解决此问题,谢谢。

在您的解析器中:

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {

    return forkJoin(respp, resp);
}

我在使用MatTabGroup+Angular animations进行的测试的基础上创建了一个工作示例:

添加代码示例,否则没有人会准备从头开始工作。最简单的方法是,你可以使用
Observable
,它可以用于所有类型。你可以返回一个Observable数组。这会有帮助吗?@jithil我错误地提交了不完整的问题,现在我已经完成了。@jpavel你能参考我现在编辑的上面的代码吗。
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {

    return forkJoin(respp, resp);
}
this.activatedRoute.data.subscribe((data) => {
    console.log(data);
});