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

Значения падает при повторном 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 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Специализация Frontend-разработчик
    9 месяцев
    Далее
  • Академия Eduson
    Frontend-разработчик
    9 месяцев
    Далее
  • OTUS
    JavaScript Developer. Professional
    5 месяцев
    Далее
Решения вопроса 1
Нужно использовать useFactory вместо useValue и возвращать в функции инстанс сервиса.
providers:    [
    {
        provide: IfViewportSizeService,
        useFactory: () => new IfViewportSizeService( config ) }
  ]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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