我将AngularJS 1.6组件迁移到Angular 4.3.2,并且需要在组件标记上强制实施id
属性。但是,要使ng2 +与现有的ng1组件一起使用,您需要降级它们:
angular.module('myNg1module')
.directive('myComponent', downgradeComponent({component: MyComponent}))
在已编译的输出中,这会使Angular generate a dynamic id覆盖您自己的id
。例如,输出将是:
<my-component id="NG2_UPGRADE_27_0"></my-component>
我尝试的没有成功:
id
属性:<my-component id="my-id">
但输出只会覆盖它; [attr.id]
中设置了<my-component [attr.id]="my-id">
的ID,但这将被忽略。答案 0 :(得分:1)
如果不是an Angular bug的真正解决方案,则以下是我用来覆盖生成的id
的解决方法:
@Component({
selector: 'my-component'
})
class MyComponent implements OnInit {
@Input() id: string;
constructor(private el: ElementRef) {}
ngOnInit(): void {
this.el.nativeElement.id = this.id;
}
}
然后调用<my-component [id]="my-id">
看起来覆盖了这样生成的id won't have bad side-effects。