我想在HTML页面中使用组件的静态变量。 如何将组件的静态变量与角度为2的HTML元素绑定?
import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs/Rx';
@Component({
moduleId: module.id,
selector: 'url',
templateUrl: 'url.component.html',
styleUrls: ['url.component.css']
})
export class UrlComponent {
static urlArray;
constructor() {
UrlComponent.urlArray=" Inside Contructor"
}
}
<div>
url works!
{{urlArray}}
</div >
答案 0 :(得分:78)
组件模板中绑定表达式的范围是组件类实例。
你不能直接引用全局或静态。
作为一种变通方法,您可以在组件类中添加一个getter
export class UrlComponent {
static urlArray;
constructor() {
UrlComponent.urlArray = "Inside Contructor";
}
get staticUrlArray() {
return UrlComponent.urlArray;
}
}
并使用它:
<div>
url works! {{staticUrlArray}}
</div>
答案 1 :(得分:19)
为了避免Angular调用在每个循环中获取staticUrlArray,您可以在组件的公共范围中保存类引用:
export class UrlComponent {
static urlArray;
public classReference = UrlComponent;
constructor() {
UrlComponent.urlArray = "Inside Contructor";
}
}
然后你可以直接使用它:
<div>
url works! {{ classReference.urlArray }}
</div>
答案 2 :(得分:1)
您也可以只声明类类型的字段,例如:
export class UrlComponent {
static urlArray;
UrlComponent = UrlComponent;
constructor() {
UrlComponent.urlArray=" Inside Contructor"
}
}
然后可以使用以下前缀引用静态变量:
<div>
url works! {{UrlComponent.urlArray}}
</div>
这也有效/对于直接在模板中引用枚举之类的东西或诸如console之类的对象是必需的。
答案 3 :(得分:0)
export class UrlComponent {
readonly urlArray;
}
答案 4 :(得分:0)
无需在构造函数中编码的解决方案:
export class UrlComponent {
readonly static urlArray = ' Inside Class';
readonly UrlArray = UrlComponent.urlArray;
constructor() { }
}
您可以在其他组件或类中使用该静态字段:
import {UrlComponent} from 'some-path';
export class UrlComponent2 {
readonly UrlArray = UrlComponent.urlArray;
}
在模板中使用(请注意UrlArray
中的大写字母'U')
<div>
url works!
{{UrlArray}}
</div>
答案 5 :(得分:0)
这对我有用,但验证器的错误消息停止工作
这是我的代码。
<form [formGroup]="staticformGroup" class="form">
<div class="box">
<input type="text" id="uname" class="field" formControlName="name">
<span class="PlaceHolder" id="namePlaceHolder">Name</span>
<small *ngIf="name.invalid && name.touched" class="text-danger">Name is Required</small>
</div>
<div class="box">
<input type="mailOrNum" id="mailOrNum" class="field" formControlName="email">
<span class="PlaceHolder" id="mailPlaceHolder">Email</span>
<small *ngIf="email.invalid && email.touched" class="text-danger">invalid value</small>
</div>
</form>
ts 文件:
static signup = new FormGroup({
'name': new FormControl("", Validators.required),
'email': new FormControl("", [Validators.required, Validators.email])
});
get staticformGroup():FormGroup{
return SignUpFormComponent.signup;
}