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

Значения падает при повторном 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...
  • Вопрос задан
  • 51 просмотр
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    WEB-022 Разработка на Angular. Продвинутый уровень
    1 неделя
    Далее
  • Академия Эдюсон
    Frontend-разработчик + ИИ
    9 месяцев
    Далее
  • МИПО
    Бакалавриат Веб-разработка
    54 месяца
    Далее
Решения вопроса 1
Нужно использовать useFactory вместо useValue и возвращать в функции инстанс сервиса.
providers:    [
    {
        provide: IfViewportSizeService,
        useFactory: () => new IfViewportSizeService( config ) }
  ]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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