Javascript 类型“Actionmodel”不可分配给类型“boolean”
我需要在列表中找到对象 这是我的清单:Javascript 类型“Actionmodel”不可分配给类型“boolean”,javascript,angular,typescript,Javascript,Angular,Typescript,我需要在列表中找到对象 这是我的清单: export interface Controllermodel { controllerDisplayName: string; controllerFarsiName: string; roleId: number; controllerId: string; actionsVM: Actionmodel[]; } export interface Actionmodel { displayName: string; ac
export interface Controllermodel {
controllerDisplayName: string;
controllerFarsiName: string;
roleId: number;
controllerId: string;
actionsVM: Actionmodel[];
}
export interface Actionmodel {
displayName: string;
actionEnglishName: string;
actionId: number;
}
现在我需要在列表中查找对象,但当我使用此代码时:
export class ValidatePermissionDirective implements OnInit {
show: boolean;
constructor(private templateRef: TemplateRef<any>,
private viewContainerRef: ViewContainerRef
, private dynamic: DynamicPermissionService) { }
// tslint:disable-next-line:no-input-rename
@Input('appValidatePermission') AccessName:string;
ngOnInit() {
this.ValidatePemission();
if (this.show) {
this.viewContainerRef.createEmbeddedView(this.templateRef);
} else {
this.viewContainerRef.clear();
}
}
ValidatePemission()
{
console.log(this.AccessName)
const find = this.dynamic.dynamicModel.find(x =>
x.actionsVM.find(z => z.actionEnglishName === this.AccessName));
console.log(find)
if (find) {
console.log(false);
this.show = false;
} else {
console.log(true);
this.show = true;
}
}
}
但当我使用此代码时,它会显示以下错误:
类型“Actionmodel”不可分配给类型“boolean”
有什么问题吗??如何解决此问题?添加!!要确保查找结果为布尔值,请执行以下操作:
const find = this.dynamic.dynamicModel.find(x =>
!!x.actionsVM.find(z => z.actionEnglishName === this.AccessName));
接受单个参数:接受数组元素并返回布尔值的函数。返回的对象将是找到的实例或未定义的实例
在内部find调用中,您得到了以下正确结果:z.actionEnglishName===this.AccessName返回一个布尔值
在外部查找调用中,您将返回内部查找的结果,该结果将是Actionmodel实例或未定义的值。这些值可以强制为true和false,但Typescript希望这是显式的。从!!,确保truthy值(如实例)将返回值true,而falsy值(如undefined)将返回值false,它与Typescript对find方法的定义相匹配。哪一行抛出error@Sajeetharan在这一行中:const find=this.dynamic.dynamicModel.findx=>x.actionsVM.findz=>z.actionEnglishName==this.AccessName@kianoushdortaj这是什么类型的。AccessName您在哪里声明它?@MaihanNijat i更新问题您可以在问题中添加DynamicPermissionService代码吗
const find = this.dynamic.dynamicModel.find(
x => x.actionsVM.find(
z => z.actionEnglishName === this.AccessName));