需要一些帮助,我只想做一个简单的任务:将变量从app.component.ts传递到路径中的app.module.ts。
在app.component.ts中,我从服务中获得了一些价值,如:
ngOnInit(){
this.subsc = this.someService.someMethod().subscribe(
(someId: any[]) => {
console.log(someId);
},
(error) => {
console.log("some error");
}
);
}
我想把它变成someId并传递给app.module.ts,如:
const pmRoutes: Routes = [
{ path: '', redirectTo: someId+'/some-other-component', pathMatch: 'full' }
];
谢谢。
答案 0 :(得分:0)
不可能按照你的描述做。在Angular中,您需要创建与给定模式匹配的路径。如果你需要一个id,那么这就是你必须拥有的方法:
{ path: '', redirectTo: '{someId}/some-other-component', pathMatch: 'full' }
然后处理组件中someId
的值。例如,假设您希望在用户单击按钮时导航到该路径。然后,使用(click)
方法:
constructor(protected router: Router) {}
onClick(id) {
this.router.navigate([id, 'some-other-component']);
}
然后Angular将看到此路线与您提供的路线相匹配并加载相应的组件。
修改强>
警卫应该是这样的:
import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot } from '@angular/router';
import { Observable } from "rxjs/Observable";
import { ServiceToFetchTheRouteValue } from 'somewhere';
@Injectable() export class RouteGuard implements CanActivate {
constructor(private service: ServiceToFetchTheRouteValue) { }
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): any {
// assuming you get your value asynchronously and getValue() returns an Observable
return this.service.getValue().map((value: any) => {
// + is to convert the value to number;
return value === +route.params['someId'];
});
}
}