2016-01-25 3 views
0

Привет ... Есть ли способ, которым я могу установить переменную localtemplate в созданный элемент. Поскольку я хочу, чтобы созданный элемент имел переменную localtemplate. Я могу установить идентификатор, так как он является атрибутом, но не localtemplate variable.I сделали plunker демо http://plnkr.co/edit/VGHEPBs8oZW7HG6Ze21z?p=preview И я пытаюсь создать его следующим образомМожно ли добавить локальную переменную шаблона с помощью BrowserDomAdapter?

add(){ 
var a=this.dom.createElement('button'); 
var b=this.dom.createTemplate('<div #child></div>'); 
this.dom.on(a, 'click', this.raiseevent.bind(this, this.op)); 
this.dom.setInnerHTML(a,'clickme'); 
this.dom.appendChild(this.dom.query("my-app"),a); 
this.dom.appendChild(this.dom.query("my-app"),b); 
this.op++; 

}

Средства его похожим к id, который я могу использовать в любом месте ... Это будет что-то вроде этого, где #child - это локальная переменная шаблона. Префикс # до «child» идентифицирует дочерний элемент как локальную переменную шаблона. Мы можем ссылаться на эту переменную в шаблоне для доступа к свойствам ребенка

ответ

0

Зачем вам нужно вводить элементы DOM, то же самое можно сделать с помощью компонентов?

@Component({ 
    selector: 'child', 
    template: `<button (click)="raiseevent()">clickme</button>` 
}) 
export class ChildComponent{ 
    raiseevent(){ 
     // do something 
    } 
} 

@Component({ 
    selector: 'my-app', 
    template: `<child #child *ngFor="#item in children"></child>`, 
    directives: [ChildComponent] 
}) 
export AppComponent{ 
    children: any[] = []; 

    add(){ 
     this.children.push({...}); 
    } 
} 

Конечный результат будет таким же. Каждый раз, когда вызывается метод add(), новая кнопка будет добавлена ​​с собственным методом raiseevent(). У вас может быть даже ребенок, у которого есть метод для родителя, используя EventEmitter.

Это не учитывает ваш <div #child></div>, который вы вводите, потому что я не знаю, каковы ваши намерения. Если бы вы могли представить более подробный пример, я мог бы дать более подробный ответ. Хотя вы можете так же легко добавить <div> в template из ChildComponent, и конечный результат будет таким же.

Смежные вопросы