web-dev-qa-db-ja.com

ts2304は「OnInit」という名前を見つけることができません

私はAngularスーパーヒーローチュートリアルに取り組んできました。すべて動作します。

NPMを実行しているcmdウィンドウを閉じてから、CMDウィンドウを再度開き、NPM STARTコマンドを再発行すると、2つのエラーが発生します

src/app/DashBoard.component.ts(12,44)  TS2304 : Cannot find name 'OnInit'.
src/app/hero-list.component.ts(16, 434)  TS2304 : Cannot find name 'OnInit'.

削除することでこれを解決できます

Implements OnInit

これらの両方のクラスから、NPM startを実行し、それらを再度追加します(エディターのCTL Zのみ)いくつかの変更を行い、保存します。アプリが再コンパイルされ、オフになり実行されます。

この機能を実装する4つのクラスがあります。私はそれらを研究しましたが、2が失敗する原因を理解することはできません...

TS2304を参照する投稿を読みましたが、これは汎用の関数/変数/シンボルが見つかりませんというメッセージのようです...

何を投稿したらいいかわかりません。コードを投稿できてうれしいです。
これは、これが依存するモジュール(hero.ts)のエラーが原因ですか?

この方法で失敗しているクラスが1つあります。これはhero-list.component.tsファイルです(デモ/オンラインの例のさまざまなポイントで、これはHeroes.component ..という名前でもあります)。

import { Component } from '@angular/core';
import { Router } from '@angular/router';

import { Hero  } from './hero';
import { HeroService  } from './hero.service';

@Component({
  selector: 'hero-list',
  templateUrl: './hero-list.component.html' ,
  providers: [HeroService],
  styleUrls: [ './hero-list.component.css']
})



export class HeroListComponent implements OnInit   {

    heroes : Hero[];
    selectedHero: Hero;

    constructor(
        private router : Router ,
        private heroService: HeroService
        ) { }

    ngOnInit(): void {
        this.getHeroes();
    }

    onSelect(hero: Hero): void {
        this.selectedHero = hero;
    }

    getHeroes(): void {
        this.heroService.getHeroes().then(heroes => this.heroes = heroes);
    }

    gotoDetail() {
        this.router.navigate(['/detail', this.selectedHero.id]);
    }

    add(name: string): void {
        name = name.trim();
        if (!name) { return; }
        this.heroService.create(name)
            .then(hero => {
                this.heroes.Push(hero);
                this.selectedHero = null;
            });
    }
    delete(hero: Hero): void {
        this.heroService
            .delete(hero.id)
            .then(() => {
                this.heroes = this.heroes.filter(h => h !== hero);
                if (this.selectedHero === hero) { this.selectedHero = null; }
            });
    }
}
15
greg

OnInitをインポートする必要があります。

import { Component, OnInit } from '@angular/core';
42
Eduardo Dennis

チュートリアル では、TypeScriptファイルに OnInit のインポートを追加する必要があるとは言及されていませんapp.component.ts

import { Component, OnInit } from '@angular/core';
8
J Woodchuck

OnInitをインポートするだけ

import { Component, OnInit } from '@angular/core';
0
Akitha_MJ