![](/img/trans.png)
[英]Typescript cannot access static class member in ngFor loop
[英]typescript, access static member
我想要這樣的東西-Api.drinks.info->這是靜態的並返回字符串。 但是我有一個錯誤
module App {
export class Api {
public static drink: Drink;
}
class Drink {
static get base(): string { return '/api/drink'; }
public static get info(): string { return `${Drink.base}/info`; }
}}
如何解決或實施? 謝謝。
更新
可能的解決方案之一
module Api {
export module Drink {
var base = '/api/drink';
export var info = `${base}/info`;
}
export module Admin {
var base = '/api/drink';
export var info = `${base}/info`;
}}
Api.drink
不是Drink
(類(構造函數)),它是具有info
; 它是Drink
的一個實例 ,不是。 嘗試訪問它的行試圖像使用類一樣使用實例。
您不會導出Drink
,因此訪問它的唯一方法實際上是回旋處:
this.resource = this.dataAccessService.getResource(Api.drink.constructor.info);
...但是最好將Drink
導出並直接使用:
this.resource = this.dataAccessService.getResource(Drink.info);
請注意,引用的代碼永遠不會為drink
實例分配值,因此您需要使用以上兩種方法之一。
另外,也許您打算將Drink
構造函數公開為Api
的靜態成員? 如果是這樣,則需要進行一些更改,請參見注釋:
module App {
// Classes aren't hoisted, so this needs to be before Api
class Drink {
static get base(): string { return '/api/drink'; }
public static get info(): string { return `${Drink.base}/info`; }
}
export class Api {
// 1. It's a function
// 2. We're initializing it to Drink
// 3. Because it's a constructor function / class, we use an
// initial capital letter in its name
public static Drink: Function = Drink;
}
}
然后:
this.resource = this.dataAccessService.getResource(Api.Drink.info);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.