无法在Angular6的Input属性中提供空格作为值

时间:2019-06-19 08:58:47

标签: angular angular6 angular-input

我正在尝试创建这样的通用控件

dynamic-control.ts

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

@Component({
  selector: 'ngo-button',
  template: `<button [ngClass]=class type={{type}}>{{message}}</button>`,
  styles: [`.one{border:solid 2px yellow} .two{background-color:pink} .three{
  background-color: blue;
}`]
})
export class HelloComponent  {
   @Input() type: string = 'button';
  @Input() class: string = 'one three';
  @Input() message: string = 'submit';
}

main-component.html

<ngo-button [class]='btn two' (click)='somefunc()'></ngo-button>

现在我想将两个类传递给按钮,但是当我尝试以这种方式传递它时,出现错误

  

[class] ='btn two'

我想,我们不允许在输入参数中添加空格,还有另一种实现方法吗?

this is the stackblitz link

4 个答案:

答案 0 :(得分:7)

<ngo-button [class]="'btn two'" (click)='somefunc()'></ngo-button>

Angular的默认语法。如果使用[input]表示法,则必须在引号中提供一个字符串。

否则:

<ngo-button class="btn two" (click)='somefunc()'></ngo-button>

尽管我不得不说,但它真的不明白为什么您使用输入来提供组件的类。

答案 1 :(得分:2)

您可以使用[ngClass]

<ngo-button [ngClass]="{'first class':{expression},'second class':{expression}}" (click)='somefunc()'></ngo-button>

N.B:表达式类似于:true / false,2> 1等。

记住:删除{expression}中的{}

答案 2 :(得分:1)

<ngo-button [class]="'button'" (click)='somefunc()'></ngo-button>

答案 3 :(得分:0)

如果在Angular中使用方括号[],则是在告诉Angular编译器以下内容是要解析的表达式。由于btn two不是有效的表达式,因此您遇到了解析错误。您实际要做的是:

[class]="'btn two'"

值得一提的是,由于您已选择将输入命名为“类”,因此以后Angular可能会遇到问题,既将值作为输入参数传递给,又将应用为父元素的类。