angular 2+属性不是@Input()中指定的已知属性

时间:2017-10-05 19:00:08

标签: javascript html css angular properties

目的是只添加垂直像素数

<spacer [height]="200"></spacer>    

第一个问题:错误说高度不是间隔物的已知属性。所以看看这个: HTML:

<div [ngStyle]="{'padding': 'getHeight()'}">
   &nbsp;
</div>

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

@Component({
  selector: 'spacer',
  templateUrl: './spacer.component.html',
  styleUrls: ['./spacer.component.scss']
})
export class SpacerComponent  {
   @Input() height = '';
   constructor() { }

   getHeight() {
      return this.height;
   }
}

高度是属性吗?对?我还想将px添加到高度,但这似乎更糟糕。 感谢您的帮助。

谢谢,瑜珈。

1 个答案:

答案 0 :(得分:1)

问题是高度不是有效的html属性。如果您尝试更改px高度,则需要使用类或属性绑定来使css动态化。你还需要在'200'之后加上'px',例如:

@Input() height="200px"; //better to set the inside the parent component
// html
// use attribute binding
<div [attr.height]="height"></div>
// OR use interpolation
<div attr.height="{{ height }}"></div>

<强>此外:

我认为您对@Input()用法感到困惑。 @Input()不是执行此任务所必需的,它最常用于从父组件获取模板引用或值。

你可以简单地在.ts文件中定义高度,height = '200px'没有@Input,然后使用上面的代码将该变量放入你的html中。只有当高度值来自另一个组件时才需要@Input()装饰器,在这种情况下,它用于与另一个组件通信,而不是与你的html模板通信。