Winkel-4-Richtlinie-Fehler: Kann nicht beheben Sie alle Parameter für die Richtlinie
Ich bin Total neu zu Eckig und zu versuchen, zu injizieren grundlegende Struktur der Richtlinie von Winkel-guide. Hier ist meine Richtlinie:
import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
@Directive({
selector: '[pcDropdown]'
})
export class DropdownDirective {
private hasView = false;
constructor(
private templateRef: TemplateRef<any>,
private viewContainer: ViewContainerRef,
private items
) { }
@Input() set pcDropdown(condition: boolean) {
if (!condition && !this.hasView) {
this.viewContainer.createEmbeddedView(this.templateRef);
this.hasView = true;
} else if (condition && this.hasView) {
this.viewContainer.clear();
this.hasView = false;
}
}
}
Ich versuche zu injizieren es in meinem TradeModule
:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SharedModule } from '../shared/shared.module';
import { TradeComponent } from './trade.component';
import { DropdownDirective } from '../dropdown.directive/dropdown.directive';
@NgModule({
imports: [
CommonModule,
SharedModule
],
declarations: [TradeComponent, DropdownDirective],
exports: [DropdownDirective]
})
export class TradeModule { }
Und verwenden Sie den folgenden Teil des HTML in meine TradeComponent
's Vorlage:
...
<p *pcDropdown="true">
TEST
</p>
...
Aber ich bin immer der Fehler:
Nicht abgefangener Fehler: Kann nicht beheben Sie alle Parameter für DropdownDirective:
([object object], [object object], ?).
Webstorm ist auch die zugrunde liegenden meine @Directive
Dekorateur und Folgendes sagen:
Winkel: Kann nicht beheben Sie alle Parameter für DropdownDirective in
/home/commercialsuicide/Desktop/my-app/src/client/app/dropdown.Richtlinie/dropdown.Richtlinie.ts:
([object object], [object object], ?)
Es auch sagen, dass meine pcDropdown
Eingang unbenutzt ist:
Sagen zu müssen, dass sah ich schon diese Antwort und emitDecoratorMetadata
bereits true
im tsconfig.json
.
Bitte zeigen, wo ich falsch geschrieben, oder vergessen, etwas in meinem code.
Vielen Dank
InformationsquelleAutor Commercial Suicide | 2017-07-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
private items
fehlt, ist ein Typ-parameter. Winkel können nicht erstellen Komponenten-Instanzen, wenn Sie es nicht lösen können alle Parameter für Anbieter.Die Lösung zu Anbietern funktioniert nur mit dem parameter-Typen und -
@Inject(...)
Anmerkungen.Wenn Sie nicht möchten, dass
items
injiziert werden, entfernen Sie den parameter. Es gibt keine situation, wo Sie brauchen würde, um eine Komponente zu erstellen Instanz selbst übergeben die parameter explizit.Hinweis: Die Fehlermeldung, die es darauf hin mit der
?
welcher parameter den Fehler verursachtDropdownDirective: ([object Object], [object Object], ?).
. Froh zu hören, diese lösen es für Sie schon 🙂InformationsquelleAutor Günter Zöchbauer
Ich verließ mein Fall, da fand gerade diese Frage, indem Sie meine Anfrage.
Hatte ich annotation @HostListener und onResize-Methode. @HostListener sollte vor und in der Nähe der zugehörigen Methode. Wie
Bekam ich diese Fehlermeldung, wenn Sie verschoben hatte, annotation vor dem Aufruf einer anderen Methode. Wie
Hoffe, das wird hilfreich sein für jemanden!
InformationsquelleAutor dragomirik