Значения падает при повторном 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...
  • Вопрос задан
  • 42 просмотра
Решения вопроса 1
Нужно использовать useFactory вместо useValue и возвращать в функции инстанс сервиса.
providers:    [
    {
        provide: IfViewportSizeService,
        useFactory: () => new IfViewportSizeService( config ) }
  ]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы