传递给子组件的原始值在 Angular 2 的构造函数中未定义

Posted

技术标签:

【中文标题】传递给子组件的原始值在 Angular 2 的构造函数中未定义【英文标题】:Primitive values passed to child component are undefined in constructor in Angular 2 【发布时间】:2016-10-21 21:38:11 【问题描述】:

我对 Angular 2 很陌生。 我需要创建一个可重用的用户资料图片组件,它有 2 个高度和宽度输入,最后以正确的大小表示图片。

我在 parent.html 中的组件调用:

<user-profile-pic [height]="50" [width]="50" [counterValue]="myValue"></user-profile-pic>

我的组件用户配置文件图片:

import Component,Input from '@angular/core';

@Component(
  selector : 'user-profile-pic',  
  template: '<img src="http://to/picture.png"> ',
  inputs:['width','height']
)

export class UserProfilePic 
    /*
    @Input() height : String;
    @Input() width : String;
*/
public height:String;
public width:String;
  constructor() 
      console.log("This is the height ",this.height," And the width : ",this.width);
  


控制台记录了我未定义的高度和宽度.. 有什么建议 ?

【问题讨论】:

【参考方案1】:

试试看:

import Component,Input, OnInit from '@angular/core';

@Component(
  selector : 'user-profile-pic',  
  template: '<img src="http://to/picture.png"> '
)

export class UserProfilePic implements OnInit 
    @Input() height : String;
    @Input() width : String;

  ngOnInit() 
      console.log("This is the height ",this.height," And the width : ",this.width);
  


【讨论】:

【参考方案2】:

输入尚未在构造函数中设置。它们在第一次调用 ngOnChanges() 时设置(每次更新调用)。 ngOnInit() 在第一次调用 ngOnChanges() 之后调用。

只需将代码更改为

export class UserProfilePic 
    /*
    @Input() height : String;
    @Input() width : String;
*/
public height:String;
public width:String;
ngOnInit() 
      console.log("This is the height ",this.height," And the width : ",this.width);
  

从您的示例看来,您的组件也缺少 counterValue 输入。

【讨论】:

非常感谢。 [关于 counterValue - 没关系,我知道 ]

以上是关于传递给子组件的原始值在 Angular 2 的构造函数中未定义的主要内容,如果未能解决你的问题,请参考以下文章

将 Angular Reactive FormControls 传递给子组件

将值传递给子组件Angular 7

angular2 将 ngModel 传递给子组件

包装或扩展 angular-material 组件,允许将未知属性传递给子组件

【Flutter】多组件共用状态,父组件状态传递给子组件

如何在不使用角度的ng的情况下将输入值从父组件传递给子组件?