我在angular 5
中实现了一个创建我的foo
对象的组件,它运行正常,但之后我想编辑它,所以我将编辑路径指向同一个组件:
const routes: Routes = [
...
{ path: 'foo/new', component: NewFooComponent },
{ path: 'foo/edit/:id', component: NewFooComponent },
...
];
我的问题是如何知道NewFooComponent.ts
foo/new
路径或foo/edit/:id
中的#include <iostream>
#include <limits>
using namespace std; // not in real code plz
int main() {
cout << "largest int is " << numeric_limits<int>::max() << '\n';
cout << "largest double is " << numeric_limits<double>::max() << '\n';
return 0;
}
?
这也是最好的方法吗?
答案 0 :(得分:5)
我要做的是将new
或edit
设置为参数并使用ActivatedRoute
检查参数
所以我将按如下方式设置路线:
const routes: Routes = [
...
{ path: 'foo/:state', component: NewFooComponent },
{ path: 'foo/:state/:id', component: NewFooComponent },
...
];
并执行检查
constructor(public activatedRoute: ActivatedRoute) { }
ngOnInit() {
this.activatedRoute.params.subscribe(
params => {
if(params['state'] === 'new') { ... }
else {...}
}
);
}
答案 1 :(得分:1)
使用ActivatedRoute
获取路由器参数导航ID路径中存在id
属性
constructor(private route:ActivatedRoute){}
ngOnInit(){
// 'id' is the name of the route parameter
if (this.route.snapshot.params['id']) { .... };
else { ... }
}
答案 2 :(得分:0)
我认为这是一个糟糕的设计决定,您的NewFooComponent
现在正在创建和编辑某些内容,并且违反了SRP,因此您可能应该为编辑创建专用组件并共享模板如果这是重复,你试图避免只创建一个组件。