input - Angular 2将对象传递给组件

标签 input typescript angular

我正在尝试将一个对象传递给另一个组件。

请求列表.html

<tr [routerLink]="['Request', { id: request.id }]" *ngFor="let request of requests" [req]="request">
                        <td class=" ">{{ request.datum }}</td>
                        <td class=" ">{{ request.artist.name }} </td>
                        <td class=" ">{{ request.artist.user.first_name }}
                        <td class=" ">{{ request.user.first_name }}</td>
                        <td class=" ">{{ request.duration.price }}</td>
                        <td class=" ">{{ request.created_at }}</td>
                        <td class=" ">{{ request.rejected_at }}</td>
                    </tr>

请求列表组件

import {Component} from '@angular/core';
import {Service} from './../services/service.service';
import {Request} from './../classes/request';
import {RouteConfig, ROUTER_DIRECTIVES} from '@angular/router-deprecated';
import {RequestComponent} from './request.component';

@Component({
  directives: [ROUTER_DIRECTIVES, RequestComponent],
  templateUrl: 'partials/request-list.html'
})

export class RequestListComponent {
  requests: Request[];
  constructor(private _Service: Service) {}

  ngOnInit(){
    this._Service.getRequests().subscribe(data => this.requests = data);
  }
}

请求组件

import {Component, Input} from '@angular/core';
import {Service} from './../services/service.service';
import {Request} from './../classes/request';


@Component({
  templateUrl: 'partials/request.html'
})

export class RequestComponent {
  @Input() req: Request;

  constructor(private _Service: Service) {}
}

但是我收到错误消息:“无法绑定(bind)到‘req’,因为它不是已知的 native 属性”

我做错了什么?

最佳答案

正如我在评论中提到的,如果您的 RequestComponent 加载了 Router,则您不能使用 @Input()。不幸的是,无法使用 RouteLink 指令传递 RouteData

为了解决这个问题,我会从服务中加载 RequestRequestComponent 中,你用来加载 Requests 列表.要减少到后端的流量,如果有的话,您可以构建一些缓存机制。

export class RequestComponent {
    req: Request;

    constructor(private _Service: Service, routeParams : RouteParams) {
        this.req = _Service.getRequestById(routeParams.get('id'));
    }
}

关于input - Angular 2将对象传递给组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37119403/

相关文章:

javascript - TypeScript 闭包——一个 "almost"的解决方案

node.js - LernaJS typescript 找不到模块

Java搜索表单查询IP号码

iPhone - 带有 html 内容的 UITextView?

angularjs - 在 AngularJS 表单中添加复选框

javascript - 如何在 javascript 中导入 typescript 类?

android - 过滤真实输入设备

angular - 如何拥有一个可以容纳任何组件的侧边栏?

angular - 无法重置包含选择的 react 形式

java - 模板中的 angular2 ngfor 对象数组错误