Как сделать директиву глобальной, чтобы ее можно было использовать в любом месте страницы, не полностью контролируемой angular 2

Есть ли способ сделать директиву глобальной? мне нужно, чтобы он был добавлен из любой точки на странице, не полностью контролируемой Angular 2, например: я хочу создать (средство выбора даты, сетка или список изображений и т. д.), созданный Angular 2, а затем использовать этот компонент в любом месте на созданной странице другими обрамлениями, похожими на этот вид HTML:

<body>
    <label>birth of date</label>
    <input type= "text" id='dob' angular2datetimepicker  >
    <label>Join Date</label>
    <input type= "text" id= 'jod' angular2datetimepicker  > 
</body>

куда angular2datetimepicker является компонентом или пользовательской директивой, созданной в угловом 2, но используемой вне углового 2 контекста.

1 ответ

Вы могли бы bootstrap это с помощью PLATFORM_DIRECTIVES:

Токен, который может быть предоставлен при начальной загрузке приложения, чтобы сделать массив директив доступным в каждом компоненте приложения.

import {PLATFORM_DIRECTIVES} from 'angular2/core';
import {OtherDirective} from './myDirectives';
@Component({
  selector: 'my-component',
  template: `
    <!-- can use other directive even though the component does not list it in `directives` -->
    <other-directive></other-directive>
  `
})
export class MyComponent {
  ...
}
bootstrap(MyComponent, [provide(PLATFORM_DIRECTIVES, {useValue: [OtherDirective], multi:true})]);

Пример запуска ниже:

import {bootstrap}    from 'angular2/platform/browser';
import {PLATFORM_DIRECTIVES, provide}    from 'angular2/core';
import {HighlightDirective} from './highlight.directive';
import {AppComponent} from './app.component';

bootstrap(AppComponent, [
        provide(PLATFORM_DIRECTIVES, {useValue: HighlightDirective, multi: true})
]);

Смотрите демо плункер здесь.

Другие вопросы по тегам