私はAngularにまったく新しく、注入しようとしています 基本的な構造ディレクティブ from Angularガイド。ここに私のディレクティブがあります:
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;
}
}
}
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 { }
また、TradeComponent
のテンプレートでHTMLの次の部分を使用します。
...
<p *pcDropdown="true">
TEST
</p>
...
しかし、私はエラーを得ています:
キャッチされないエラー:DropdownDirectiveのすべてのパラメーターを解決できません:([object Object]、[object Object]、?)。
Webstormも私の@Directive
デコレータの基礎になっており、次のように言っています。
Angular:/home/commercialsuicide/Desktop/my-app/src/client/app/dropdown.directive/dropdown.directive.ts:([object Object]、[object Object]、? )
また、私のpcDropdown
入力は使用されていません。
言う必要がある、私はすでに この答え を見たし、emitDecoratorMetadata
はtsconfig.json
でtrue
にすでに設定されている。
スペルを間違えたか、コードに何かを含めるのを忘れた場所を指摘してください。
どうもありがとう
_private items
_に型パラメーターがありません。 Angularすべてのパラメーターをプロバイダーに解決できない場合、コンポーネントインスタンスを作成できません。
プロバイダーへの解決は、パラメーター型と@Inject(...)
アノテーションでのみ機能します。
items
を注入したくない場合は、パラメーターを削除します。パラメータを明示的に渡すためにコンポーネントインスタンスを自分で作成する必要がある状況はありません。
私のリクエストによってこの質問だけが見つかったので、私はここに私のケースを残しました。
アノテーション@HostListenerとonResizeメソッドがありました。 @HostListenerは、関連するメソッドの前および近くにある必要があります。お気に入り
@HostListener("window:resize", ["$event"])
onResize(event) {
// some code
}
別のメソッドを呼び出す前に注釈を移動したときにこのエラーが発生しました。お気に入り
@HostListener("window:resize", ["$event"])
getSomeObjects (args:any = {}) {
// some code
}
onResize(event) {
// some code
}
これが誰かに役立つことを願っています!
私の場合、Storage
という名前のサービスがあるためにこのエラーが発生しましたが、javascriptには同じ名前のグローバル変数があるため、コンパイラーはそれをエラーとしてマークしません。だから私は追加しました:
import { Storage } from '@core/auth/token-storage.service';