Angular 2以角度输入指令
我在angular 11中有一个指令,具有以下输入:Angular 2以角度输入指令,angular,Angular,我在angular 11中有一个指令,具有以下输入: @Directive({ selector: "[appHasToken]", }) export class HasTokenDirective implements OnInit, OnDestroy { @Input("appHasToken") fallback: TemplateRef<any>; @Input("showWarning") show
@Directive({
selector: "[appHasToken]",
})
export class HasTokenDirective implements OnInit, OnDestroy {
@Input("appHasToken") fallback: TemplateRef<any>;
@Input("showWarning") showWarning = false;
//...
}
@指令({
选择器:“[appHasToken]”,
})
导出类HasTokenDirective实现OnInit、OnDestroy{
@输入(“appHasToken”)回退:TemplateRef;
@输入(“showWarning”)showWarning=false;
//...
}
我在代码中这样调用它:
<ng-container *appHasToken="noToken">
现在在一个地方,我希望showWarning是真的,所以我做到了
<ng-container *appHasToken="noToken;" [showWarning]="true">
但我的灵感来自
无法绑定到“showWarning”,因为它不是“ng容器”的已知属性
现在,我知道我可以使用与指令不同的名称重命名输入,并且
<ng-container appHasToken [templateRef]="noToken" [showWarning]="true">
但是,如果保留我正在做的相同内容,有修复方法吗?当您使用*(结构指令)编写指令时,angular会在元素周围添加一个ng模板,因此
会转换为:
<ng-template [appHasToken]="noToken">
<ng-container></ng-container>
</ng-template>
如果这使您想起了ngFor
它的原因是ngFor
也使用了它!这是你的电话号码
下面是一个示例,请注意,您的输入应如下所示:
导出类HasTokenDirective实现OnInit、OnDestroy{
@输入(“appHasToken”)回退:TemplateRef;
@输入(“appHasTokenShowWarning”)showWarning=false;
//...
}
不会在DOM中呈现。它主要用作*ngFor和*ngIf模板中的Javascript花括号。检查文档
相反,请使用普通div或任何其他组件。您好,谢谢,我以前尝试过这样做:
*appHasToken=“noToken;showWarning:true”
但这会使整个内容无效>属性绑定appHasTokenShowWarning未被嵌入模板上的任何指令使用。请确保属性名称拼写正确,并且所有指令都列在“@NgModule.declarations”中。虽然*appHasToken=“noToken”
单独起作用,我不知道为什么这个加法会破坏whjole的功能。而且你还更改了指令中的输入名称?输入名称就像主帖子一样。你必须更改第二个参数的输入,再次阅读我的答案,我将在几分钟内添加stackblitz
<ng-container *appHasToken="noToken; showWarning true">