Angular 用于内部插入件相邻TML的加载
我通过用户单击动态地将元素附加到模板内,方式如下:Angular 用于内部插入件相邻TML的加载,angular,typescript,Angular,Typescript,我通过用户单击动态地将元素附加到模板内,方式如下: this.optionValue = []; youClickMe(){ var moreput = ''; moreput += '<select">'; moreput += '<option *ngFor="let lup of optionValue">{{lup.name}}</option>'; moreput += '</select>'
this.optionValue = [];
youClickMe(){
var moreput = '';
moreput += '<select">';
moreput += '<option *ngFor="let lup of optionValue">{{lup.name}}</option>';
moreput += '</select>';
var pElement = document.querySelector('.somewhereyoubelong');
pElement.insertAdjacentHTML('beforeend', moreput);
}
this.optionValue=[];
youClickMe(){
var moreput=“”;
moreput+='Angular不处理特定于角度的标记,如动态添加HTML的匹配组件或指令选择器或绑定
Angular在编译组件时为这些内容生成代码。
编译组件时,组件模板中不包含的内容将被Angular完全忽略
您可以做的是在运行时动态创建和编译角度组件。有关更多详细信息,请参见请不要这样做。我想知道,如果您编写这样的组件,为什么需要此框架code@yurzui,我就是这么做的。应该怎么做,如何解决问题?非常感谢。这部分是独一无二的,所以实际上并不多与框架相关。框架真正的目的是为了散列。非常感谢您带着respond来到这里。我有点困惑如何以这种有角度的方式来做,就像您在我之前的回答中所说的“DynamicComponentLoader”,我在想它是否与此相关。您首先需要创建一个组件如上面链接的答案中所述,动态地添加组件,然后您可以使用ViewContainerRef.createComponent
(前面的DynamicComponentLoader
)嗯,我也需要导入浏览器
模块才能让它工作。现在,我只是想知道为什么angular会让简单的事情变得如此复杂,虽然我们不能说我们需要使用另一个框架来处理类似的事情,但它不是程序员的编程语言。等等,数据没有插入到父对象中。
const templating = '<p *ngFor="let sizeCat of sizeCategoryBySubCategory" [value]="sizeCat.id">{{sizeCat.name}}</p>';
const tmpCmp = Component({template: templating})(class {});
const tmpModule = NgModule({declarations: [tmpCmp]})(class {});
this._compiler.compileModuleAndAllComponentsAsync(tmpModule).then((factories) => {
const f = factories.componentFactories[0];
const cmpRef = f.create(this._injector, [], null, this._m);
//cmpRef.instance.testText = 'B component';
cmpRef.instance.sizeCategoryBySubCategory = [
{ id:1, name: 'a'},
{ id:2, name: 'b'},
];
this._container.insert(cmpRef.hostView);
});