【发布时间】:2017-01-13 18:52:52
【问题描述】:
我正在学习 Angular 2 并尝试按照他们的教程进行操作。 这是返回模拟对象文件夹的“承诺”的服务的代码。
import {Injectable, OnInit} from "@angular/core";
import {FOLDER} from "./mock-folder";
import {Folder} from "./folder";
@Injectable()
export class FolderService {
getFolder():Promise<Folder>{
return Promise.resolve(FOLDER);
}
}
它在我的 FolderModule 的提供者中声明
import {NgModule} from "@angular/core";
import {CommonModule} from "@angular/common";
import {FolderComponent} from "./folder.component";
import {MaterialModule} from "@angular/material";
import {FolderService} from "./folder.service";
@NgModule({
imports:[CommonModule, MaterialModule.forRoot()],
exports:[FolderComponent],
declarations:[FolderComponent],
providers:[FolderService]
})
export class FolderModule{
}
文件夹组件应该导入FolderService并使用它来获取文件夹对象。
import {Component, OnInit} from "@angular/core";
import {Folder} from "./folder";
import {FolderService} from "./folder.service";
@Component({
selector: 'folder',
moduleId: module.id,
templateUrl: "./folder.component.html"
})
export class FolderComponent implements OnInit {
folder:Folder;
constructor(private folderService:FolderService) {
}
ngOnInit():void {
this.getFolder();
}
getFolder() {
this.folderService.getFolder().then((folder) => this.folder = folder);
}
}
是的,我确实在根模块中导入了我的 FolderModule
@NgModule({
imports: [BrowserModule, CommonModule, MaterialModule.forRoot(), FolderModule, AppRoutingModule],
providers:[],
declarations: [AppComponent, LifeMapComponent, MyPageNotFoundComponent],
bootstrap: [AppComponent]
})
export class AppModule {
}
这里是文件夹组件模板
<md-grid-list cols="3" [style.background] ="'lightblue'" gutterSize="5px">
<md-grid-tile *ngFor="let card of folder.cards">{{card.title}}</md-grid-tile>
</md-grid-list>
这是我在控制台中遇到的错误
异常:未捕获(承诺中):错误:错误 http://localhost:3000/app/folders/folder.component.html:1:16引起 作者:无法读取未定义类型错误的属性“卡片”:无法读取 未定义的属性“卡片”
export class Folder {
public id:number;
public title:string;
public cards:Card[];
}
export class Card{
id :number;
title:string;
}
【问题讨论】:
标签: javascript angular