2016-03-14 7 views
6

他のファイルから指令をインポートしようとしたときに、エラーが発生しましたEXCEPTION: No Directive annotation found on MyComponent - これを解決するには?ここAngular2 - エラーが発生しました:「例外:MyComponentに指令がありません」

は私のコードは次のとおりです。

app.component.ts:

import {Component} from 'angular2/core'; 
import {MyComponent} from "./app.my-component" 

@Component({ 
    selector: 'app', 
    template: ` 
     <h1>Hellow World</h1> 
     <span>Here is your component:</span> 
     <my-component></my-component> 
    `, 
    directives: [MyComponent] 
}) 

export class AppComponent { } 

app.mycomponent.ts:

import {Component} from 'angular2/core'; 

@Component({ 

    selector : 'my-component', 

    template : `<h2>This is from My component</h2>` 

}); 

export class MyComponent { }; 

しかし、私のようにエラーを取得しています:解決する方法No Directive annotation found on MyComponentこの?

+0

'import {MyComponent} from" ./app。 – micronyks

+0

コンポーネントの作成場所からではなく、アプリケーションルートのフォルダからの相対パスであることを確認する必要があります。たとえば、「import {MyComponent} from "../ "./app.my-component"から – John

+0

@john両方のファイルが同じフォルダ内にある – 3gwebtrain

答えて

29

;は、コンポーネントの末尾にComponentの指示括弧を付けて削除する必要があります。

import {Component} from 'angular2/core'; 

@Component({ 

selector : 'my-component', 

template : `<h2>This is from My component</h2>` 

}) 
export class MyComponent { }; 
+0

削除しましたがまだ動作していません – 3gwebtrain

+0

ファイル名は「app.mycomponent.ts」ですか、「app-mycomponent.ts」ですか? –

+0

私のファイル名は 'app.my-component.ts'です - – 3gwebtrain

0

多分、相対パスを作成する必要があります。これは、インポートするコンポーネントは、あなたがでコンポーネントをインポートするスクリプトに対して配置される場所に依存。

import {MyComponent} from "../app.my-component"

または

import {MyComponent} from "./app.my-component"ような何か。

あなたがフォルダ構造を投稿した場合でも役立ちます。

+0

がエラーになります:systemjsは次のようにエラーをスローします:' http:// localhost:3001/app.myあなたが2番目のsuggesionを使用している場合には、「コンポーネントの404(見つからない)」というエラーが表示されます。「NoComplianceで見つからないディレクティブの注釈」 – 3gwebtrain

+0

ご迷惑をおかけして申し訳ありません。 ://blog.edenmsg.com/angular2-typescript-gul pおよびexpressjs /。たぶんあなたはそれからあなたの問題の原因を見つけるでしょう。最初の角度2のアプリケーションを作成する際に、その投稿を参考にしました。 – John

0

でも、私はこれでもまだ「学習」していますが、私はあなたと同じメッセージを持っています。私はそれを解決したと思う ...

はここに私の答えを見つけた:https://angular.io/docs/ts/latest/guide/attribute-directives.html

は、あなたのapp.mycomponent.tsにこれを追加します。

import {Directive} from 'angular2/core'; 

とディレクティブを追加します。

@Directive({ 
    selector: '[MyComponent]' 
}) 

これは少し助けてくれることを願っています。

は再び、これは...正しい方法である私の場合は

+0

私のコードからこのソリューションを削除した後、私は '終わりの解決策'としてそれに満足していなかったので、私は再びクラッシュするだろうと思った...しかし、それはdidnt ...非常に奇妙な。おそらくキャッシュの問題? – Sander

0

場合はわからない、特定のクラスのエクスポート、およびその他のコンポーネントでそのクラスのインポートに問題がありました。

しかし、このエラーは明示的には表示されず、代わりにコンソールのEXCEPTION: No Directive annotation...に例外として表示されます。明示的にこのエラーを取得するために

:再実行npm start

  1. 停止ローカルサーバー
  2. (角クイックスタート設定を仮定して)

以前の意志を隠された任意の電流誤差すぐに表示されます。

関連する問題