Въпросът ми е прост, но повярвай ми, че се опитвам да обвивам главата си около него часове наред.
Има компонент, който трябва да бъде инстанция чрез селектор на класове.
@Component({
selector: ".mycomponent",
template: "<h1>hello!</h1>"
})
export class MyComponent{}
Да кажем, че родителският компонент изглежда така:
@Component({
...
template:
`
<div class="mycomponent"></div> <!-- rendered -->
<div [class]=""mycomponent""></div> <!-- not rendered -->
`
})
export class ParentComponent{}
Защо втората версия никога не е такапостановено? Как да го направя? Дали това е въпрос на откриване на промяна или просто не би трябвало да работи по този начин? Аз бях свирил с стратегията за откриване на промени, която нямаше ефект. Също така се натъкнах DynamicComponentLoader
, Надявам се, че мога да се оправя с него.
Има ли начин да заредите компонентите динамично чрез не-елемент селектори?
Отговори:
3 за отговор № 1Това не трябва да работи. Компонентите и директивите се прилагат само за статично добавени маркери, атрибути и класове.
Ако искате динамично да добавяте / премахвате компоненти и директиви DynamicComponentLoader или createComponent()
на ViewContainerRef
-1 за отговор № 2
Защо не работи, защото когато използвате [класа], това означава, че "класът" е attr, който не приписва клас "mycomponent" на div.