Javascript 在angular2中使用动态组件加载程序进行双向数据绑定
我想知道如何使用angular2.for ex中的DynamicComponentLoader建立双向数据绑定Javascript 在angular2中使用动态组件加载程序进行双向数据绑定,javascript,typescript,angular,Javascript,Typescript,Angular,我想知道如何使用angular2.for ex中的DynamicComponentLoader建立双向数据绑定 ngAfterViewInit() { //console.log('Generic Component...' + this.componentName + " Loading"); let componentIndex = this.keysRegister.indexOf(this.componentName); this.dcl.loadNextToLocation(thi
ngAfterViewInit() {
//console.log('Generic Component...' + this.componentName + " Loading");
let componentIndex = this.keysRegister.indexOf(this.componentName);
this.dcl.loadNextToLocation(this.typesRegister[componentIndex],this.target)
.then(ref => {
ref.instance.componentModel = this.componentModel;
});
console.log('Generic Component...' + this.componentName + " Loaded");
}
所以,如果我在动态加载的组件中对componentModel进行更改,它们也应该反映在通用组件中&反之亦然。
任何输入?首先:DynamicComponentLoader现在不推荐用于两个版本,它将在下一个版本或之后成为专用。查看实现并复制它—它非常简单。 使用ComponentResolver解析组件,这将返回一个工厂,该工厂由ViewContainer用于创建组件 主要区别在于DynamicComponentLoader使用了您提供的ViewContainerRef,现在您可以直接使用ViewContainerRef实例来创建新的组件/模板 关于你的问题: 首先,让我们将双向数据绑定分离为
@Input
和@Output
。我们必须这样做,因为它们在角度上确实不同
快速回答:您需要手动管理输入和输出,是的
为了充分理解为什么我们需要深入研究代码生成器以及它的功能,我将尝试保持在顶部,这需要时间来处理
需要记住的一点是:当您创建一个组件时,您会得到它的一个实例
ComponentRef包含对组件实例的引用
输出
对于需要订阅新创建组件实例上每个EventEmitter的输出,这些EventEmitter是您声明的@Output
属性,您还需要在适当的时间取消订阅,或者在刚刚创建的组件上进行中继以完成()
当发射器被摧毁时,它将被释放
输入
对于输入,您需要侦听<强> ngdoChuest生命周期挂钩,并检查每一个您认为是<代码> @输入< /C>项目的项目,如果它改变了。
此外,如果您想通过属性将数据传递给新组件,这是不可能的,因为您实际上没有宿主元素,您将要创建它。。。因此,向组件发送数据的方法是:
@Input()
和@Output
来自元数据。。。
动画也是如此
仔细想想,angular是一个HTML到代码引擎,它将HTML标记与用HTML编写的代码指令混合在一起,并从中创建JavaScript代码。该代码使用组件的实例(与模板匹配),并执行称为angular的神奇操作。首先:DynamicComponentLoader现在不推荐用于两个版本,它将在下一个版本或之后成为专用。查看实现并复制它—它非常简单。 使用ComponentResolver解析组件,这将返回一个工厂,该工厂由ViewContainer用于创建组件 主要区别在于DynamicComponentLoader使用了您提供的ViewContainerRef,现在您可以直接使用ViewContainerRef实例来创建新的组件/模板 关于你的问题: 首先,让我们将双向数据绑定分离为
@Input
和@Output
。我们必须这样做,因为它们在角度上确实不同
快速回答:您需要手动管理输入和输出,是的
为了充分理解为什么我们需要深入研究代码生成器以及它的功能,我将尝试保持在顶部,这需要时间来处理
需要记住的一点是:当您创建一个组件时,您会得到它的一个实例
ComponentRef包含对组件实例的引用
输出
对于需要订阅新创建组件实例上每个EventEmitter的输出,这些EventEmitter是您声明的@Output
属性,您还需要在适当的时间取消订阅,或者在刚刚创建的组件上进行中继以完成()
当发射器被摧毁时,它将被释放
输入
对于输入,您需要侦听<强> ngdoChuest生命周期挂钩,并检查每一个您认为是<代码> @输入< /C>项目的项目,如果它改变了。
此外,如果您想通过属性将数据传递给新组件,这是不可能的,因为您实际上没有宿主元素,您将要创建它。。。因此,向组件发送数据的方法是: