Angular 2 Dart 模板语法:如何访问静态方法?
Angular 2 Dart Template syntax: How to access static methods?
有没有办法从 Dart 中的模板访问静态方法?
问题如下:
offer.dart:
class Offer {
static String getPriceString(double price) {
return euroFormat.format(price) + " €";
}
}
第一次尝试:
main_component.html:
<div class="offer" *ngFor="let offer of offers">
<span class="offer_price">{{ offer.getPriceString(1.9) }}</span>
</div>
异常:
EXCEPTION: NoSuchMethodError: Class 'Offer' has no instance method
'getPriceString'. Receiver: Instance of 'Offer' Tried calling:
getPriceString(4.9)
第二次尝试:
main_component.html:
<div class="offer" *ngFor="let offer of offers">
<span class="offer_price">{{ Offer.getPriceString(1.9) }}</span>
</div>
异常 2:
EXCEPTION: NoSuchMethodError: Class 'MainComponent' has no instance
getter 'Offer'. Receiver: Instance of 'MainComponent' Tried calling:
Offer
如果我从 getPriceString()
中删除 static
关键字,一切都像在 "First Try" 中调用一样,但感觉不太好,因为我失去了静态调用的可能性。
绑定表达式的范围是组件 class 实例。
如果您想从该范围之外访问某些内容,您需要提供一种通过组件 class 实例(如 getter)
访问它的方法
class MyComponent {
String get someStaticProp => SomeClass.someStaticProp;
}
然后您可以在
等视图绑定中访问它
<div>{{someStaticProp}}</div>
有没有办法从 Dart 中的模板访问静态方法?
问题如下:
offer.dart:
class Offer {
static String getPriceString(double price) {
return euroFormat.format(price) + " €";
}
}
第一次尝试:
main_component.html:
<div class="offer" *ngFor="let offer of offers">
<span class="offer_price">{{ offer.getPriceString(1.9) }}</span>
</div>
异常:
EXCEPTION: NoSuchMethodError: Class 'Offer' has no instance method 'getPriceString'. Receiver: Instance of 'Offer' Tried calling: getPriceString(4.9)
第二次尝试:
main_component.html:
<div class="offer" *ngFor="let offer of offers">
<span class="offer_price">{{ Offer.getPriceString(1.9) }}</span>
</div>
异常 2:
EXCEPTION: NoSuchMethodError: Class 'MainComponent' has no instance getter 'Offer'. Receiver: Instance of 'MainComponent' Tried calling: Offer
如果我从 getPriceString()
中删除 static
关键字,一切都像在 "First Try" 中调用一样,但感觉不太好,因为我失去了静态调用的可能性。
绑定表达式的范围是组件 class 实例。
如果您想从该范围之外访问某些内容,您需要提供一种通过组件 class 实例(如 getter)
访问它的方法class MyComponent {
String get someStaticProp => SomeClass.someStaticProp;
}
然后您可以在
等视图绑定中访问它<div>{{someStaticProp}}</div>