Angular2:路由路径中的解析和数据有什么区别?
Angular2: what is difference between resolve and data in routing paths?
我看到有两种方法可以将简单数据(例如字符串)从路由路径传递到不同的组件:
第一种方式:
路由端:
export const AppRoutes: Routes = [
...
{
path: '/one', component: OneComponent, resolve: { foo: 'foo' }
}
];
组件端:
@Component()
export class OneComponent implements OnInit {
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.foo = this.route.snapshot.data['foo'];
}
}
第二种方式:
路由端:
const routes: RouterConfig = [
...
{
path: '/one', component: OneComponent, data : {some_data : 'some value'}
}
];
组件端:
@Component()
export class OneComponent implements OnInit {
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.obs = this.route
.data
.subscribe(v => console.log(v));
}
ngOnDestroy() {
this.obs.unsubscribe();
}
}
那么向组件传递值的最佳方式是什么? resolve
和 data
属性有什么区别?
data
是路由中添加的静态数据,而resolve调用的是一个可以计算数据的服务,同样使用async调用。
您的 resolve
示例无效。
见https://angular.io/docs/ts/latest/guide/router.html#!#resolve-guard
我看到有两种方法可以将简单数据(例如字符串)从路由路径传递到不同的组件:
第一种方式:
路由端:
export const AppRoutes: Routes = [
...
{
path: '/one', component: OneComponent, resolve: { foo: 'foo' }
}
];
组件端:
@Component()
export class OneComponent implements OnInit {
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.foo = this.route.snapshot.data['foo'];
}
}
第二种方式:
路由端:
const routes: RouterConfig = [
...
{
path: '/one', component: OneComponent, data : {some_data : 'some value'}
}
];
组件端:
@Component()
export class OneComponent implements OnInit {
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.obs = this.route
.data
.subscribe(v => console.log(v));
}
ngOnDestroy() {
this.obs.unsubscribe();
}
}
那么向组件传递值的最佳方式是什么? resolve
和 data
属性有什么区别?
data
是路由中添加的静态数据,而resolve调用的是一个可以计算数据的服务,同样使用async调用。
您的 resolve
示例无效。
见https://angular.io/docs/ts/latest/guide/router.html#!#resolve-guard