如何在路由解析中获取可观察对象作为输出而不是对象
how to get an observable as output instead of object in route resolve
resolve: {course: ResolveService }
// 这给出了 return 中的一个对象。而是得到一个可观察的。可能吗?
export const appRoutes: Routes = [
{ path: 'registration',
component: SomeComponent,
canDeactivate: [SomeGuardService],
resolve: {course: ResolveService } // This gives an object in retrun
},
//解析
@Injectable()
export class ResolveService implements Resolve<Observable<any>> {
constructor(private dropDown: DropDownService) { }
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {
return this.dropDown.coursesDt;
}
}
在ResolveService
中将resolve
修改为return一个observable的observable。 resolve 函数将等到 returned observable 发出,然后将其绑定到路由配置中定义的值。为了将一个可观察对象发送到路由组件,您需要将其包装在另一个可观察对象中。像这样:
@Injectable()
export class ResolveService implements Resolve<Observable<any>> {
constructor(private dropDown: DropDownService) { }
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Observable<any>> {
return Observable.of(this.dropDown.coursesDt);
}
}
resolve: {course: ResolveService }
// 这给出了 return 中的一个对象。而是得到一个可观察的。可能吗?
export const appRoutes: Routes = [
{ path: 'registration',
component: SomeComponent,
canDeactivate: [SomeGuardService],
resolve: {course: ResolveService } // This gives an object in retrun
},
//解析
@Injectable()
export class ResolveService implements Resolve<Observable<any>> {
constructor(private dropDown: DropDownService) { }
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {
return this.dropDown.coursesDt;
}
}
在ResolveService
中将resolve
修改为return一个observable的observable。 resolve 函数将等到 returned observable 发出,然后将其绑定到路由配置中定义的值。为了将一个可观察对象发送到路由组件,您需要将其包装在另一个可观察对象中。像这样:
@Injectable()
export class ResolveService implements Resolve<Observable<any>> {
constructor(private dropDown: DropDownService) { }
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Observable<any>> {
return Observable.of(this.dropDown.coursesDt);
}
}