在要加载的组件中
path: 'projects/:projecteId'
,你可以注射
ActivatedRoute
听我说
params
可以在上面看到。
变化
将运行您的代码:
假设你开了一家
ProjectComponent
,您可以执行以下操作:
import { ActivatedRoute } from '@angular/router';
@Component({...})
export class ProjectComponent {
projectId;
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.params.subscribe(params => {
this.projectId = params['projecteId'];
// Here you'll always get notified when `projecteId` changes.
// You can do the needful from here.
});
}
}
更新:
CanActivate
警卫,在里面
canActivate
你可以用
ActivatedRouteSnapshot
. 这也有一个
它是一个对象,但具有更新的
参数
import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class ProjectGuard implements CanActivate {
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
// Here the `next.params.projectId` will always give you updated projectId
...
}
}
params.projectId
projectId
投影
检查项目是否从下拉列表中实际更改。然后可以在ProjectGuard中注入该服务作为依赖项,这样就可以开始了。
这里有一个
Sample StackBlitz