【问题标题】:Passing data to component angular2将数据传递给组件 angular2
【发布时间】:2016-04-26 13:06:41
【问题描述】:

尝试将数据传递给子组件,我可以将属性附加到模板中,但似乎无法访问组件类中的 id。有什么想法吗?

---父母---

   <related-products [id]="product.id"></related-products>

--孩子--

import {Component, OnInit, Input} from 'angular2/core';
import {RouteParams, Router} from 'angular2/router';
import {ProductService} from '../products/product.service.js';

@Component({
  selector: 'related-products',
  templateUrl: "wp-content/themes/f2/app/views/directives/related-products-template.html",
  inputs: ['id'],
  providers: [ProductService]
})
export class RelatedProductsComponent implements OnInit {

  products: any[];
  errorMessage: string; 
  id: number;

  constructor(
    private _service: ProductService,
    private _router: Router,
    private _routeParams: RouteParams
  ) {}

  ngOnInit() {

    console.log(this.id);
  }

}

【问题讨论】:

    标签: angular


    【解决方案1】:

    您可以尝试将@Input 用于id 属性:

    export class RelatedProductsComponent implements OnInit {
      products: any[];
      errorMessage: string;   
      @Input() // <------------
      id: number;
    
      (...)
    }
    

    但它应该与inputs 属性一起使用,并且您应该可以访问ngOnInit 钩子方法中的值。您确定提供的表达式 product.id 返回定义的内容吗?

    看到这个 plunkr:https://plnkr.co/edit/aG4TdHbAls3cu04AAt64?p=preview

    【讨论】:

    • 我认为这是因为我正在调用 ajax 来获取数据,而这又意味着子组件中的数据还没有准备好。我如何等待子组件构建好让我知道数据可用
    • 你是直接得到产品还是循环中的一个元素?
    • 它是单个详细信息页面,所以我拨打电话并获取数据,并且我有子组件(相关产品(它需要来自父组件(产品详细信息)的 id)
    • 子组件触发时,父数据尚未准备好。当数据可用时,需要一种从子组件访问父数据的方法
    • 您对product.id 表达式没有任何错误? ;-) 我认为 product 最初是未定义的。也许猫王接线员可以帮助您:product?.id。稍后将收到该值。尝试在子组件中显示成ngOnChanges钩子方法...
    猜你喜欢
    • 2017-06-01
    • 2016-09-19
    • 2017-06-12
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 2017-08-29
    • 2023-03-24
    相关资源
    最近更新 更多