Use directive in host of another Directive
Я хочу добавить директиву к элементу из другой директивы с помощью свойства host, но, похоже, нет способа ссылаться на другую директиву.
@Directive({
selector: '[one]',
host: { '[two]': '"some-value"' }
// How can I reference DirectiveTwo here?
})
export class DirectiveOne { }
@Directive({
selector: '[two]'
})
export class DirectiveTwo { }
При этом я получаю стандартную ошибку "Не удается связать с" двумя ", поскольку это не известное нативное свойство".
Как правильно ссылаться и использовать одну директиву из другой?
2 ответа
Директивы создаются Angular для селекторов, соответствующих только статически добавленному HTML (элемент, id, атрибут, класс, ...).
Нет никакого способа создать директивы, используя host
параметр @Component()
или же @Directive()
декоратор. Также нет способа создавать директивы динамически, используя ViewContainerRef.createComponent()
(бывший DynamicComponentLoader
)
Поддерживается получение ссылки на другую директиву, которая была создана Angular из-за статически добавленного HTML в том же элементе.
Теперь этого можно достичь с помощьюhostDirectives
в Ангуляре v15+
@Directive({
selector: '...',
hostDirectives: [Tooltip, Menu],
})
export class MenuWithTooltip { }
Подробности в документации Angular