1. ホーム
  2. typescript

[解決済み] AngularでNameServiceのプロバイダがない

2022-03-14 22:55:59

質問

Angularコンポーネントにクラスをロードする際に問題が発生しました。私は長い間それを解決しようとしてきました。私はそれを1つのファイルにすべて結合しようとしました。私が持っているものは、次のとおりです。

アプリケーション.ts

/// <reference path="../typings/angular2/angular2.d.ts" />

import {Component,View,bootstrap,NgFor} from "angular2/angular2";
import {NameService} from "./services/NameService";

@Component({
    selector:'my-app',
    injectables: [NameService]
})
@View({
    template:'<h1>Hi {{name}}</h1>' +
    '<p>Friends</p>' +
    '<ul>' +
    '   <li *ng-for="#name of names">{{name}}</li>' +
    '</ul>',
    directives:[NgFor]
})

class MyAppComponent
{
    name:string;
    names:Array<string>;

    constructor(nameService:NameService)
    {
        this.name = 'Michal';
        this.names = nameService.getNames();
    }
}
bootstrap(MyAppComponent);

services/NameService.ts

export class NameService {
    names: Array<string>;
    constructor() {
        this.names = ["Alice", "Aarav", "Martín", "Shannon", "Ariana", "Kai"];
    }
    getNames()
    {
        return this.names;
    }
}

というエラーメッセージが出続けています。 No provider for NameService .

どなたか、私のコードの問題点を見つけるのを手伝っていただけませんか?

解決方法を教えてください。

を使用する必要があります。 providers の代わりに injectables

@Component({
    selector: 'my-app',
    providers: [NameService]
})

完全なコードサンプルはこちら .