我有这个UI路由器状态,附加了一个组件:
export const exchangeState = {
name: 'exchange',
url: '/exchange',
component: ExchangeMainComponent,
resolve: [
{
token: 'fromResolve',
resolveFn: () => {
return 'string from resolve';
}
}
]
};
在组件的构造函数中,我尝试访问fromResolve
但它返回undefined。这是组件:
@Component({
selector: 'app-exchange-main',
templateUrl: './exchange-main.component.html',
styleUrls: ['./exchange-main.component.css']
})
export class ExchangeMainComponent implements OnInit {
@Input('fromResolve') fromResolve: string;
constructor() {
console.log(this.fromResolve); // <- undefined
}
ngOnInit() {
}
}
fromResolve
在视图中正确显示。
如何在构造函数中获得它的值?
答案 0 :(得分:1)
@Input
值首先在OnChanges
生命周期钩子中可用。执行顺序是......
constructor -> OnChanges -> OnInit ....
因此,您可以在OnChanges
或OnInit
中访问它,但不能在构造函数中访问它。
答案 1 :(得分:0)
如果你使用Angular RouterModule,你应该做这样的事情
fromResolve: string;
constructor(private router: ActivatedRouter) {
this.route.data
.subscribe((data: { fromResolve: string}) => {
this.fromResolve= data.fromResolve;
});
}
您应该按照此处描述的方式修改路由器: