Задать вопрос

Значения падает при повторном createEmbeddedView. Что не так?

Создал директиву ifViewportSize, который при рендере компонента test, должен выводить его шаблон со значением. Но значение не выводится при повторном рендере, чего не хвотает?

Рендер шаблона:
if( size === this._ifViewportSize ) this.viewContainerRef.createEmbeddedView( this.templateRef );
else this.viewContainerRef.clear();


Шаблон:
<test *ifViewportSize="'small'" [value]="1"></test>


Компонент test:
import { Component, Input, ViewChild } from '@angular/core';

@Component({
  selector: 'test',
  template: `Value: {{ value }}`,
})
export class TestComponent{
  @Input() value: number;
}


Полные исходники https://stackblitz.com/edit/vim8-2-resize-template...
  • Вопрос задан
  • 47 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Javascript.ru
    Курс по Angular
    6 недель
    Далее
  • Skillfactory
    Профессия Frontend-разработчик PRO
    14 месяцев
    Далее
  • Компьютерная академия «TOP»
    Frontend разработка
    12 месяцев
    Далее
Решения вопроса 1
Нужно использовать useFactory вместо useValue и возвращать в функции инстанс сервиса.
providers:    [
    {
        provide: IfViewportSizeService,
        useFactory: () => new IfViewportSizeService( config ) }
  ]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы