javascript - Angular 2 : Cannot get router parameter to work with service

标签 javascript angular typescript angular2-routing

我正在使用 Angular 2 构建一个网站。我有一个详细信息页面,通过在 url (http://localhost:3000/#/projectdetail/1) 中传递 id 来访问它。我尝试通过我通过的 id 访问服务以获取正确的项目。该项目保存在项目变量中,但该变量实际上始终未定义

这是我进入详细信息页面时遇到的错误: Errors

这是我使用的代码片段(如果您需要更多代码,请询问):

projectdetail.page.html:

<div class="container-fluid">
    <h1>{{project.name}}</h1>
    <div>{{project.description}}</div>
</div>

projectdetail.page.ts:

public project: Project;

constructor(private projectsService: ProjectsService, private route: ActivatedRoute) {
    for (let i = 0; i < 4; i++) {
        this.addSlide();
    }
}

ngOnInit() {
    this.route.params.map(params => params['id']).subscribe((id) => {
        this.projectsService.getProject(id).then(project => this.project = project);
    });
}

projects.service.ts:

getProject(id: number): Promise<Project> {
    return this.http.get(this.url).toPromise().then(x => x.json().data.filter(project => project.id === id)[0]).catch(this.handleError);
}

最佳答案

您收到的错误来自模板。 在模板渲染时,project 尚不可用。

尝试将其包装在 *ngIf 中以避免这种情况。

<div class="container-fluid" *ngIf="project">
    <h1>{{project.name}}</h1>
    <div>{{project.description}}</div>
</div>

关于javascript - Angular 2 : Cannot get router parameter to work with service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39147736/

相关文章:

javascript - 使用 JavaScript 进行回调

highcharts - angular2-highcharts Highcharts 导出模块

css - 从 ng-container 内容中删除的空白字符

angular - 'By' 类型的参数不可分配给 'Predicate<DebugElement>' 类型的参数

javascript - Sequelize,如何获取更新行的当前值?

javascript - onscroll 事件仅执行一次

javascript - 启用禁用按钮 asp .net - 使用 javascript

angular - 类型 'do' 上不存在属性 'Observable<IProduct[]>'

angular - 如何摆脱 Angular6 typescript 错误?

Angular Material 表页脚总计