2016-11-21 24 views
0

カスタム/サードパーティーのディレクティブの使用方法や使用方法を実際に学習することなく、私はAngular 2アプリとかなり遠く離れています。Angular 2コンポーネントでディレクティブを宣言できないのはなぜですか?

とにかく、私はng2-uploaderを使用して、ユーザーがフォームで画像をアップロードできるようにしようとしています。rc6では、コンポーネント内のディレクティブを宣言する必要があります。私が提供したリンクのドキュメントによると、コンポーネントのディレクティブのプロパティにUPLOAD_DIRECTIVESをインポートするだけですが、ディレクティブのコンポーネントのプロパティではないというエラーが表示されます。それは正しいことができない、それはできますか?

私はng2-uploaderモジュールとUPLOAD_DIRECTIVESを両方ともapp.module.tsにインポートしました。エラーはありません。私はNG2-アップローダーのため、元のドキュメントあたりのディレクティブを使用しようとすると、私が手:

未処理の約束拒否:テンプレートの解析エラー:それはにISN以来 は「NG-ファイル選択」にバインドできません」入力の既知の特性。

私は実際に指示を得ることができるときにこれが解決されると思います。

私は何かが愚かに明らかに欠けているように感じる。問題が存在する可能性のあるセクションをいくつか紹介します。

app.component(無関係なコードは省略):

import { Ng2Uploader, UPLOAD_DIRECTIVES } from 'ng2-uploader'; 
@NgModule({ 
    imports: [ 
     Ng2Uploader, 
    ], 
    declarations: [ 
     UPLOAD_DIRECTIVES 
    ], 
    bootstrap: [ AppComponent ] 
}) 
export class AppModule {} 

ディレクティブが使用されるコンポーネント:

import { UPLOAD_DIRECTIVES } from 'ng2-uploader'; 
@Component({ 
    selector: "quote-form-partial", 
    templateUrl: "./app/components/partials/quote-form-partial/quote-form-partial.component.html", 
    directives: [UPLOAD_DIRECTIVES] 
}) 

    uploadFile: any; 
    hasBaseDropZoneOver: boolean = false; 
    options: Object = { 
     url: '/uploads' 
    }; 

    handleUpload(data): void { 
     data = JSON.parse(data.response); 
     this.uploadFile = data; 
    } 

    fileOverBase(e:any): void { 
     this.hasBaseDropZoneOver = e; 
    } 

HTMLテンプレート:@Component()@Directive() doesnの上

<input type="file" 
     [ng-file-select]="options" 
     (onUpload)="handleUpload($event)"> 
+1

これまでに解決したコードを提供してもらえますか? –

+1

NPMサイトの例は、古いバージョンのangular2のようです。 GitHubの例は私にとってより信頼できるように見えます。 https://github.com/jkuri/ng2-uploader#basic-example – retrospectacus

+0

私は自分の投稿をコードで更新しました。 – Smaft

答えて

4

directivesもう存在しない。

あなたは、私は、そのようなモジュールが実際に存在するかどうかわからないが、あなたは、最近のAngular2バージョンでそれを使用したい場合は、それが必要とされて

@NgModule({ 
    imports: [Ng2UploaderModule], 
    ... 

に追加する必要があります。

あなたは

@NgModule({ 
    declarations: [UPLOAD_DIRECTIVES] 

UPLOAD_DIRECTIVESを追加しようとすることができますが、私はこれが原因バージョンの動作するように期待していない

も参照してくださいhttps://angular.io/docs/ts/latest/guide/ngmodule.html

0

オーケーを非互換性、あなたの入力のすべては、ポイントを助けました私は正しい方向に私は、ありがとうございます。

私は絶望のうちに非難されたテクニックを使用しようとする前に、実際にすべてを正しく初期化しました(depresperation?)。

問題は私のsystemjs.configに実際に存在していました。おそらくこれは私の元の投稿に含まれていたはずです。ng2-uploaderパッケージでは、ng2-uploader.jsを指定していないため、私のアプリは存在しないindex.jsを使用しようとしていました。

以下に示すように、私のパッケージにメインプロパティ定義を追加したら、それは機能しました!

'ng2-uploader': { 
    main: './ng2-uploader.js', 
    defaultExtension: 'js' 
} 

これにより、他の誰かが頭痛を軽減できますように!

関連する問題