2

Web 上の多くの例では、@Component メタデータにディレクティブ配列を含むコードが表示されます。

@Component({
  selector: 'sprint-tasks',
  inputs: ['sprintTask'],
  templateUrl: './views/sprint-tasks.html',
  directives: [Dragula],
  providers: [SprintTaskService],
  viewProviders: [DragulaService]
})

From: Angular2 (特に Dragula) のコンポーネント ラッパーをインストールする方法

Angular2 の 1.0 リリースでは、この配列はメタデータから削除されました:( https://angular.io/docs/ts/latest/api/core/index/Component-decorator.html )

サードパーティのディレクティブ (この場合) を使用しようとすると、以前は配列dragulaによって処理されていたと思われる次のエラーが表示されます。directives

「dragula」は「div」の既知のプロパティではないため、バインドできません

では、パーサーがこのカスタム ディレクティブを見つけられるように、どこにDragula/を注入すればよいのでしょうかDragulaDirective(現在のリリースでは実際には export はないようです)。Github readme ( https://github.com/valor-software/ng2-dragula#setup )の指示に従ってアプリ モジュールDragulaにインポートし、アプリ コンポーネントのビュー プロバイダーです。DragulaModuleDragulaService

4

2 に答える 2

2

dragula モジュールをアプリ モジュールにインポートすると、アプリ モジュールで宣言されたコンポーネントでのみディレクティブを使用できるようになります。ディレクティブを使用するコンポーネントが別のモジュールで宣言されている場合、そのモジュールも dragula モジュールをインポートする必要があります

@NgModule({
  imports: [ DragularModule ]
  declarations: [ ComponentUsingDragula ],
  exports: [ ComponentUsingDragula ]
})
class SomeFeatureModule {}
于 2016-11-07T00:51:34.467 に答える
1
import { DragulaModule } from 'ng2-dragula/ng2-dragula';

@NgModule({
  imports: [
    BrowserModule,
    DragulaModule
  ],
  declarations: [
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule { }

その後、コンポーネントに追加する必要はありません。

于 2016-11-06T06:21:21.020 に答える