Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 为什么是角度2+;结构指令不';不更新视图吗?_Angular_Angular Directive - Fatal编程技术网

Angular 为什么是角度2+;结构指令不';不更新视图吗?

Angular 为什么是角度2+;结构指令不';不更新视图吗?,angular,angular-directive,Angular,Angular Directive,在我的应用程序中,我有一个帐户服务,它具有权限数组,因此我创建了一个结构指令来决定是否显示操作按钮,但问题是,当我登录/注销并更新权限数组时,该指令不会更新视图 代码如下: import{Directive,Input,TemplateRef,ViewContainerRef}来自“@angular/core”; 从“./models”导入{Account}; 从“/account.service”导入{AccountService}; @指示({ 选择器:“[appAuth]”, }) 导出类

在我的应用程序中,我有一个帐户服务,它具有权限数组,因此我创建了一个结构指令来决定是否显示操作按钮,但问题是,当我登录/注销并更新权限数组时,该指令不会更新视图

代码如下:

import{Directive,Input,TemplateRef,ViewContainerRef}来自“@angular/core”;
从“./models”导入{Account};
从“/account.service”导入{AccountService};
@指示({
选择器:“[appAuth]”,
})
导出类auth指令{
@Input()设置appAuth(操作:字符串){
如果(此._帐户权限.包括(操作)){
此._contRef.createEmbeddedView(此._tmplRef);
}否则{
这个;
}
}
建造师(
私有控制:ViewContainerRef,
private_tmplRef:TemplateRef,
私人帐户:AccountService
) { }
}
以下是指令用法的示例:


查帐
从“../common”导入{Account,AccountService};
从'rxjs/Subscription'导入{Subscription};
进口{
指令、输入、TemplateRef、ViewContainerRef、OnInit、OnDestroy
}从“@angular/core”开始;
@指示({
选择器:“[appAuth]”,
})
导出类AuthDirective实现OnInit、OnDestroy{
私人账户变更认购:认购;
@输入('appAuth')私有appAuth:string;
建造师(
私有控制:ViewContainerRef,
private_tmplRef:TemplateRef,
私人帐户:AccountService
) { }
恩戈尼尼特(){
this.\u accountChangesSubscription=this.\u account.changes$
.订阅((账户:账户)=>{
const permissions=this.\u account.permissions;
if(permissions&&permissions.includes(this.appAuth)){
此._contRef.createEmbeddedView(此._tmplRef);
}否则{
这个;
}
});
}
恩贡德斯特罗(){
此._accountChangesSubscription.unsubscribe();
}
}

我不太确定它是否必须用此代码更新视图,因为在登录之前和登录之后,指令的
@Input()
参数仍然相同(
'find-accounts'
),所以没有任何更改。我的意见是,但是如何解决呢?您的指令必须知道何时发生注销或登录事件。也许可以尝试将您的条件转移到ngOnInit中,并实现一个服务,当发生某些事情时,该服务可以通知您的指令。例如,借助于某个主题。