ich eine angular2 Richtlinie haben wie folgt:Angular2 Richtlinie nicht arbeiten außerhalb Komponente
import { DOM } from 'angular2/src/platform/dom/dom_adapter';
import {Directive, ElementRef, Renderer} from 'angular2/core'
@Directive({
selector: '[headerBG]',
host: {
'(click)': 'onClick()'
}
})
export class HeaderBGDirective {
constructor(private el: ElementRef, private renderer: Renderer) {
}
onClick() {
console.log(1234);
}
}
Wenn ich das Element Körper anwenden: <body headerBG>
, funktioniert es nicht,
aber wenn ich setzen es innerhalb einer anderen Komponente funktioniert es gut:
@Component({
selector: 'courses',
template: `<h2>
{{title}}
<input type='text' headerBG/>
</h2>
<ul>
<li *ngFor="#course of courses">
{{course}}
</li>
</ul>
`,
providers: [CourseService],
directives: [HeaderBGDirective]
})
Ist das das richtige Verhalten oder fehlen mir einige Ding? Wie wenden Sie die Richtlinie auf das Körper Element an, ohne es zu einer Komponente zu machen? Dank
EDIT
import {Component} from 'angular2/core';
import {HeaderComponent} from 'modules/shared/directives/header.component';
import {HeaderBGDirective} from 'modules/shared/directives/headerBG.directive';
@Component({
selector: 'body',
templateUrl: './welcome/templates/welcome.html',
directives: [HeaderComponent, HeaderBGDirective]
})
export class AppComponent {
post = {
title: 'Favorite',
isFavorite: true
}
}
in welcome.html: <sc-header></sc-header><div>some content</div>
Danke. Also, sieht so aus, als müsste ich die App auf "body" hochladen, aber es scheint ein begrenzender Punkt von Angular2 für mich zu sein. –
Bedeutet das, dass ich niemals eine Direktive in "body" -Tag setzen kann, da die root-app irgendwo enthalten sein sollte (was ich denke, sollte Körper sein). Oder kann ich etwas tun, wie folgt aus: '
Es gibt einige Einschränkungen im Vergleich zu Angular1. Bei Angular2 geht es um Performance und sie mussten Kompromisse eingehen. –