@Input——如何从父组件绑定子组件的ID属性
Angular 2 @Input - How to bind ID property of child component from parent component?
在父组件中,我想创建一个具有唯一ID的子组件,并且我想将该唯一ID传递给子组件,以便子组件可以将该ID放在其模板上。
父模板:<ckeditor [ckEditorInstanceID]="someUniqueID"> </ckeditor>
下面是子组件:
import { Component, Input } from '@angular/core'
var loadScript = require('scriptjs');
declare var CKEDITOR;
@Component({
selector: 'ckeditor',
template: `<div [id]="ckEditorInstanceID">This will be my editor</div>`
})
export class CKEditor {
@Input() ckEditorInstanceID: string;
constructor() {
console.log(this.ckEditorInstanceID)
}
ngOnInit() {
}
ngAfterViewInit() {
loadScript('//cdn.ckeditor.com/4.5.11/standard/ckeditor.js', function() {
CKEDITOR.replace(this.ckEditorInstanceID);
console.info('CKEditor loaded async')
});
}
}
我错过了什么?我似乎无法让子组件接收"someUniqueID"的值。
UPDATE:我能够让子组件接收值"someUniqueID "。上面更新的代码。但是,我不能通过调用this.ckEditorInstanceID
引用@Input属性,因为this
是未定义的。
如何引用我通过@Input引入的属性?
不要将输入命名为id
。这与HTMLElement
的id
属性相冲突。
技巧是使用像@David Bulte提到的箭头函数。
loadScript('//cdn.ckeditor.com/4.5.11/standard/ckeditor.js', () => {
CKEDITOR.replace(this.ckEditorInstanceID);
console.info('CKEditor loaded async')
});
由于某种原因,箭头函数可以访问this.ckEditorInstanceID
,但是常规函数(){}不能访问this.ckEditorInstanceID
。我不知道为什么,也许有人能告诉我原因。
另外,我必须像这样修改我的标记:
<ckeditor [ckEditorInstanceID]="'editor1'"> </ckeditor>
<ckeditor [ckEditorInstanceID]="'editor2'"> </ckeditor>
并将@Input属性设置为[]中的名称,即ckEditorInstanceID
,并且模板源应该是属性名称ckEditorInstanceID
,如[id]="ckEditorInstanceID"
。
从父html选择器接收ID的完整工作子组件:
import { Component, Input } from '@angular/core'
var loadScript = require('scriptjs');
declare var CKEDITOR;
@Component({
selector: 'ckeditor',
template: `<div [id]="ckEditorInstanceID">This will be my editor</div>`
})
export class CKEditor {
@Input() ckEditorInstanceID: string;
constructor() {}
ngAfterViewInit() {
loadScript('//cdn.ckeditor.com/4.5.11/standard/ckeditor.js', () => {
CKEDITOR.replace(this.ckEditorInstanceID);
console.info('CKEditor loaded async')
});
}
}
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 访问vue组件中的ID标记
- React Native:将id设置为一个组件并获取该组件's的id
- 如何在Liferay搜索组件中获取搜索按钮的ID
- Angular 2 - 如何为动态加载的组件设置 id 属性
- ExtJs - 如何在使用多个实例时设置组件的 ID
- 将当前路由活动 ID 传递给组件
- 如果我知道 DOM 元素的 ID,如何获取组件
- 调用了如何为创建按钮的每个组件提供不同的id
- Uikit.可嵌套组件-如何从移动的项目获取id
- @Input——如何从父组件绑定子组件的ID属性
- 使用Catberry Framework构建唯一组件id的最佳实践是什么?
- 如何在JavaScript中获取复合组件的子组件的客户端ID
- 组件ID可以在Chrome控制台通过$find找到,但不能在外部注入代码中找到
- Highcharts提示?如何向hiccharts DOM组件添加类或id ?
- Javascript无法通过id调用JSF组件来访问该组件
- 在 React 中重新渲染组件后scroll_to #id页面
- 我怎样才能知道JSF组件的id,以便我可以在Javascript中使用
- 使用 jquery 动态地将 id 添加到 html 组件中
- 在 React 测试中使用 id 查找组件