2016-07-12 12 views
1

開発キット(https://github.com/datatypevoid/ng2-mean-webpack)を使用してプロジェクトを開始しました。言って、私は、コンソールにエラーメッセージが表示されます。ここではAngular2クラスのコンストラクタエラー:番号のプロバイダがありません

ORIGINAL EXCEPTION: No provider for Number! 

は私です:すべては、私はパラメータのプロパティ(https://www.typescriptlang.org/docs/handbook/classes.htmlここでは公式の活字体のドキュメント上で見られるような)を使用して新しいクラスを作成する場合を除いて、完全に正常に動作するようですクラス:

@Component({ 
    selector: 'grid-tile', 
    template: require('./grid-tile.component.html'), 
    styleUrls: [require('!style!css!sass!./grid-tile.component.scss')], 
    providers: [], 
    directives: [], 
    pipes: [] 
}) 
export class GridTile extends Tile { 
    constructor(private x:number, private y: number) { 
    super(); 
    } 
} 

そして、ここで私はインスタンスを作成する方法である:

var tile = new GridTile(3,4); 
tiles.push(tile); 

私はこのprobleのソリューションを見つけることは本当にいただければ幸いです私は開発を進めていきます。私はAngular2 Tour of Heroesのチュートリアルに従っています。パラメータのプロパティはうまく動作していたようですので、開発キットや、単に渡していることがあるかどうか疑問に思っています。私はAngular2 、これは私のせいで間違いかもしれません。助けてくれてありがとう。

+0

記録のために、著者がリストされてパックが推奨されていませんし、ここに移動:https://github.com/datatypevoid/vulgar –

答えて

2

角2はMVCパターンを使用します。@Componentで装飾されたクラスはコントローラに相当します。 (これはエラーを生成します)あなたは 依存性の注入を使用しない場合

  • あなたはコンストラクタにパラメータを提供することはできません。これは、次のことを意味します

  • クラスがインスタンス化されるべきではなく、ディレクティブを通じて 子として渡すブートストラップ時 で、またはルータを介して、または角度で起動する必要があります。

あなたは慎重英雄のツアーを分析する場合は、あなたがサービスを作成していることがわかります、それは注射用クラスです:

@Injectable() 
export class HeroService { 
    ... 
    } 
} 

次にあなたがprovider(のようにそれを注入同じコンポーネントまたは親である)を生成し、それをコンポーネントのコンストラクタに渡すことによってインスタンス化します。

@Component({ 
    selector: 'my-app', 
    ... 
    providers: [HeroService] 
}) 
export class AppComponent implements OnInit { 
    ... 
    constructor(private heroService: HeroService) { } 
    ... 
} 

このようにして、注入されたクラスへのアクセスは、コンポーネントとすべての子コンポーネントによって継承されます。

この例では、パラメータとして2つの変数があり、コンポーネント内のどのプロバイダにも対応していないため、エラーが生成されます。

hereを読むことができます。開始する

または、:http://victorsavkin.com/post/118372404541/the-core-concepts-of-angular-2

+0

感謝を!私は英雄のツアーでそれを受け継いだと思うが、今はもっと意味をなさない。問題が解決しました :) – SimCity

関連する問題