web-dev-qa-db-fra.com

Angular 2: n'est pas une fonction mais existe

J'essaie d'obtenir un tableau d'une classe différente mais il dit que la fonction n'existe pas. Voici mon code:

courses.component.ts :

import {Component} from 'angular2/core'
import {CourseService} from './course.service'

@Component({
    selector: 'courses',
    template: `
        <h2>Courses</h2>
        {{ title }}
        <ul>
            <li *ngFor ="#course of courses">
            {{course}}
            </li>
        </ul>
        `,
    providers: [CourseService]
})
export class CoursesComponent{
    title = "The title of courses page";
    courses;

    constructor(courseService: CourseService){
        this.courses = CourseService.getCourses();
    }
}

course.service.ts :

export class CourseService{
    getCourses() : string[]{
        return ["Course1","Course2","Course3"];
    }
}
5
Nick

Vous devez référencer le nom de l'argument, pas le type d'argument

 this.courses = courseService.getCourses();
                ^ lower case c
5
Günter Zöchbauer

Je pense que c'est une sorte de bogue, parce que TypeScript me reconnaît la méthode, mais lorsque je supprime et redéfinis la méthode getCourses () dans le composant, il indique que la méthode est introuvable, puis je vais au Service et commence à supprimer les blancs lignes, et la méthode fonctionne. J'utilise actuellement Angular 4

1
Diego

J'ai eu le même problème inexplicable. Je copie et colle le code à partir du Web et quelque chose ne doit pas avoir été correct dans la déclaration de fonction J'ai supprimé la ligne

getCourses(): string[] {

et tapé à nouveau à la main. Quand j'ai exécuté le code, cela a fonctionné. Peut-être qu'un caractère invisible a été collé dans et tapé Typescript? Qui sait.

1
DavGarcia