Angular 未设置指令输入
Angular Directive input is not being set
我在这里找不到这个问题...
指令:
@Directive({
selector: '[appListData]'
})
export class ListDataDirective implements OnInit {
@Input('data') data: object;
@Input('layout') layout: string;
templateUrl: string;
constructor(private el: ElementRef) { }
ngOnInit(): void {
console.log(JSON.stringify(this.data));
console.log(this.layout);
this.templateUrl = 'list-data-layouts/list.html';
if (this.layout === 'grid') {
this.templateUrl = 'list-data-layouts/grid.html';
} else if (this.layout === 'list') {
this.templateUrl = 'list-data-layouts/list.html';
}
}
}
模板
<div appListData [data]=employees [layout]="grid"></div>
日志输出:布局未定义 - 为什么?
我也不确定如何在我的 div 中加载外部模板文件。谢谢。
编辑
根据建议,执行以下操作会打印出两个输入,我将继续使用第二个输入。 @nkuma_12 回答解释了它如何在组件的 class 中寻找网格 属性,这是有道理的——因为最终会有一个按钮更改布局变量。
<div appListData [data]=employees layout="grid"></div>
<div appListData [data]=employees [layout]="'grid'"></div>
我一直在阅读这里关于结构指令的文档——没有任何帮助。
https://angular.io/guide/structural-directives#write-a-structural-directive
因为您正在使用
@Input('layout') layout: string;
在指令中。
当传递输入时,我看到你传递的是 [layout]="grid"></div>
这使得它在你的组件中使用它的地方寻找网格变量并得到 undefined
.
您应该在单引号中传递值网格:[layout]="'grid'"></div>
您的数据输入值也应该用双引号引起来:[data]="employees"
。请查看文档以获取更多详细信息。
我在这里找不到这个问题...
指令:
@Directive({
selector: '[appListData]'
})
export class ListDataDirective implements OnInit {
@Input('data') data: object;
@Input('layout') layout: string;
templateUrl: string;
constructor(private el: ElementRef) { }
ngOnInit(): void {
console.log(JSON.stringify(this.data));
console.log(this.layout);
this.templateUrl = 'list-data-layouts/list.html';
if (this.layout === 'grid') {
this.templateUrl = 'list-data-layouts/grid.html';
} else if (this.layout === 'list') {
this.templateUrl = 'list-data-layouts/list.html';
}
}
}
模板
<div appListData [data]=employees [layout]="grid"></div>
日志输出:布局未定义 - 为什么?
我也不确定如何在我的 div 中加载外部模板文件。谢谢。
编辑
根据建议,执行以下操作会打印出两个输入,我将继续使用第二个输入。 @nkuma_12 回答解释了它如何在组件的 class 中寻找网格 属性,这是有道理的——因为最终会有一个按钮更改布局变量。
<div appListData [data]=employees layout="grid"></div>
<div appListData [data]=employees [layout]="'grid'"></div>
我一直在阅读这里关于结构指令的文档——没有任何帮助。 https://angular.io/guide/structural-directives#write-a-structural-directive
因为您正在使用
@Input('layout') layout: string;
在指令中。
当传递输入时,我看到你传递的是 [layout]="grid"></div>
这使得它在你的组件中使用它的地方寻找网格变量并得到 undefined
.
您应该在单引号中传递值网格:[layout]="'grid'"></div>
您的数据输入值也应该用双引号引起来:[data]="employees"
。请查看文档以获取更多详细信息。