我想要什么:
Component({
...
})
export MyComponent {
@URLParam('id')
private id
ngOnInit() {
console.log(this.id)
}
}
这里的问题是我需要在自定义装饰器函数中使用ActivatedRoute
。
所以现在装饰器功能看起来像
export function URLParam(value): PropertyDecorator {
function DecoratorFactory(target: any, propertyKey: string): void {
let subscription
const targetNgOnDestroy = target.ngOnDestroy || function (){}
const targetNgOnInit = target.ngOnInit || function (){}
function ngOnInit() {
subscription = activatedRoute.params.subscribe(params => target[propertyKey] = params[value])
targetNgOnInit.apply(this)
}
function ngOnDestroy() {
subscription.unsubscribe()
targetNgOnInit.apply(this)
}
target.ngOnDestroy = ngOnDestroy
target.ngOnInit = ngOnInit
}
return DecoratorFactory;
}
问题是,我无法从ActivatedRoute
获得对@angular/router
的访问权限,而该访问权限通常是通过类中的DI访问的。
如何将其传递到自定义装饰器函数中?