Angular 参考错误:“__“装饰”没有定义;将输入传递给角度指令时
我目前正试图将一个对象传递给下面的created指令,而element属性仍然未定义,即使别名与@input decorator匹配。onClick方法也被正确命中Angular 参考错误:“__“装饰”没有定义;将输入传递给角度指令时,angular,typescript,angular2-directives,Angular,Typescript,Angular2 Directives,我目前正试图将一个对象传递给下面的created指令,而element属性仍然未定义,即使别名与@input decorator匹配。onClick方法也被正确命中 import { Directive, Input, HostListener } from '@angular/core'; @Directive({ selector: '[nextFocus]' }) export class NextFocusDirective { @Input('ne
import { Directive, Input, HostListener } from '@angular/core';
@Directive({
selector: '[nextFocus]'
})
export class NextFocusDirective {
@Input('nextFocus')
element: any;
@HostListener('click', ['$event'])
public onClick($event: Event) {
debugger;
$($event.target).focus();
}
}
此处显示了在html中使用它的位置:
<button type="submit" class="btn btn-outline-success"
ngbTooltip="Add"
[nextFocus]="nextElement">
<i class="mdi mdi-plus"></i>
</button>
我根据angular文档尝试了各种语法,但无法解决它。我缺少什么导致元素属性正确初始化?我可以通过向输入属性添加setter来解决这个问题
private _element:any;
@Input('nextFocus')
set element(value: any) {
this._element = value;
}
添加元素后,我可以成功地利用它。我认为这与导致初始问题的两个版本之间的ts生成有关。您也可以在ngAfterContentInit生命周期方法中访问输入属性值:
export class NextFocusDirective implements AfterContentInit {
@Input('nextFocus')
element: any;
@HostListener('click', ['$event'])
public onClick($event: Event) {
debugger;
$($event.target).focus();
}
ngAfterContentInit(): void {
const val = this.element;
debugger; // val will contain input property value
}
}
您的@angular/*和typescript版本是什么?错误消息听起来可能需要更新。奇怪的是,我唯一错过的是构造函数,您是否尝试放置构造函数并重试?什么是“nextElement”?这是一个模板变量吗?为什么要使用jquery?@kalamarico我已经尝试添加了一个构造函数,但它并没有解决这个问题。我还尝试将element属性作为可注入的元素添加到构造函数中(无可否认,这只是一个天真的尝试),但没有任何帮助。我想这与我输入的设置方式有关试着删除函数性,设置最小版本,删除onclick,并将元素设置为不同类型的任何字符串,例如,我不知道,试着先做一个简单的指令也许你是对的,不喜欢它现在的样子