2016-10-21 2 views
2

Есть ли способ получить TemplateRef для существующего шаблона html внутри службы?Angular2 - получение TemplateRef внутри службы

контекст вопроса (так как я могу делать что-то неправильно в первую очередь):

Я создаю сервис, который использует NgbModal для отображения какой-нибудь текст в окне. Для модальности требуется, чтобы TemplateRef отображал содержимое, которое я точно не знаю, как его создать. Остальные опции - передать строку (которая экранирована, и мне нужно отобразить html) или передать компонент (который я не знаю, как передать желаемый текст).

ответ

2

Два способа

  • <template> из шаблона компонентов:
  • <template> передается как ребенка от внешнего

(не проверено)

@Component({ 
    selector: 'foo', 
    template: '<template #ref1>xxx</template>' 
}) 
class MyComponent { 
    @ViewChild('ref1') template1:TemplateRef; 

    constructor(private template2:TemplateRef, private someService:SomeService) { 
    someService.template2 = template2; 
    } 

    ngAfterViewInit() { 
    this.someService.template1 = this.template1; 
    } 
} 
<foo><template>yyy</template> 
+0

Попробует это, но это делает своего рода циклическую зависимость: компонент нуждается в сервисе, но службе нужен компонент для ввода шаблона, иначе он не будет правильно настроен. Может ли быть способ избежать этого? – krojew

+0

Я так не думаю. Я уверен, что вам нужен компонент, чтобы получить ссылку. Я бы не стал беспокоиться о циркуляре здесь. Это только двунаправленный. Служба должна дождаться, пока компонент передаст ссылку, но в остальном я не вижу здесь проблемы. –

+1

Я вижу, что это путь. Попробуем это, спасибо. – krojew

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