【发布时间】:2017-06-05 11:46:14
【问题描述】:
我无法渲染 Angular 的组件,我也想不通。
这与调用服务注入数据的方法有关。它正在返回以下错误消息:
例外:未捕获(承诺中)
这是我的相关代码:
cartelera-list.component.ts
import { Component, OnInit } from '@angular/core';
import { CarteleraService } from './cartelera.service';
import { Pelicula } from './pelicula.model';
@Component({
selector: 'cartelera-list',
template: `
<ul>
<li *ngFor="let pelicula of cartelera">
<p>+++ {{ pelicula.titulo }} - {{ pelicula.genero }} - {{ pelicula.duracion }} </p>
</li>
</ul>
`,
providers: [CarteleraService]
})
export class CarteleraListComponent implements OnInit {
public cartelera: Pelicula[];
contructor(private carteleraService: CarteleraService) {}
getPeliculas(): void {
this.carteleraService.getPeliculas().then((cartelera: Pelicula[]) => this.cartelera = cartelera);
}
ngOnInit(): void {
this.getPeliculas();
}
}
cartelera.service.ts
import { Injectable } from '@angular/core';
import { Pelicula } from './pelicula.model';
import { CARTELERA } from './pelicula-data';
@Injectable()
export class CarteleraService {
getPeliculas(): Promise<Pelicula[]> {
return Promise.resolve(CARTELERA);
}
}
服务返回的参数 CARTELERA 只是一个由 Pelicula 列表(接口 - 模型)组成的 const 化合物。
注意:完整消息的错误是:
例外:未捕获(在承诺中) 无法读取未定义错误的属性“getPeliculas”。
注意:这句话我之前试过
contructor(private carteleraService: CarteleraService) {}
但是,当我使用它时,会在编译时出现下一个错误。
app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { routing } from './app.routing';
import { SociosComponent } from './socios.component';
import { Index } from './index';
import { CarteleraComponent } from './cartelera.component';
import { CarteleraListComponent } from './cartelera-list.component';
@NgModule({
imports: [
BrowserModule,
FormsModule,
routing
],
declarations: [
AppComponent,
SociosComponent,
Index,
CarteleraComponent,
CarteleraListComponent
],
bootstrap: [ AppComponent ]
})
export class AppModule {}
【问题讨论】:
-
请检查我的附加说明。 @echonax
-
请检查我的附加说明。 @AJT_82
-
无论如何,从该组件所属的模块“提供”服务(如果您使用的是功能模块,则为“应用程序”或其他任何内容)。否则做同样的事情(使用正确的构造函数配置)。走着瞧吧。就应用程序架构/模式而言,我倾向于从模块提供和组件消耗的角度来考虑,可用的示例等似乎证明了这一点。我不确定我是否曾尝试从组件“提供”服务,我什至不确定组件是否可以(或应该)为自己“提供”服务。
-
哦,顺便说一句,Angular 2 对几乎所有东西都说“承诺错误”之类的东西,并用可怕的红色呕吐物加载你的控制台,这通常让人很难发现问题是这样简单的元素名称或其他内容中的拼写错误。
-
我的英语不够好,但如果我能听懂你的话……太粗鲁了……:S
标签: angular