2017-03-07 58 views
0

我有以下安裝在我的angular2和asp.net核心項目:角2數據模型繼承

我有一個C#.NET核心API的返回這個類:

public class fighter 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
    public datetime birthdate { get; set; } 
    public string score { get; set; } 
} 


public class fight 
{ 
    public int id { get; set } 
    public fighter host { get; set } 
    public fighter guest { get; set } 
    public string venue { get; set } 
} 

在我的戰鬥機。 component.ts文件,我有這樣的代碼結合API響應實際頁面:

interface Fighter { 
    id: number; 
    name: string; 
    birthdate: string; 
    score: string; 
} 

我怎麼能我的fight()類綁定到fight.component.ts? 組件之間沒有主從關係,我只是不想顯示api返回的所有「戰鬥」。

+0

首先,C#類在類名後沒有()。第二;你可以更具體地說明你正在努力完成什麼?我讀過這個,因爲你基本上已經有了答案......你只需爲'fight'類創建一個類似於你的'fighter'的接口。 – BradleyDotNET

+0

如何從Fight {}中的fighter.component.ts文件繼承Fighter {}接口?在fight.component.ts中的接口?這是個問題.. –

+0

即使這個頁面是關於MAster/Detail,如果你在「在模板中顯示英雄」之後停下來,你應該完成https://angular.io/docs/ts/latest/tutorial/toh-pt2。 html –

回答

1

我不確定我是否理解您的問題,但如果您在爲您的API獲取模型的強類型或合同之後,可以爲您的Fight類提供以下界面。

interface Fight { 
    id: number; 
    host: Fighter; 
    guest: Fighter; 
    venue: string; 
} 
export default Fight; 

現在,從你的意見,我覺得這裏的問題是,你不知道如何從一個文件中導入的實際類型到另一個。在聲明你的界面時,你需要導出它。因此,假設您的Fighter界面位於名爲IFighter.ts的文件中。該文件看起來像。

interface Fighter { 
    id: number; 
    name: string; 
    birthdate: string; 
    score: string; 
} 

export default Fighter; <= Note 

然後導入此界面中,你需要做的

// fight.component.ts 
import Fighter from 'relative/path/to/IFighter/file'; 
import Fight from 'relative/path/to/IFight/file'; 

// Do mappings. 

你可能想讀的Javascript模塊有點另一個文件中使用,希望這澄清的事情?

+0

我剛開始學習角度,我實際上試圖在這裏實現的東西就像ViewModel i .net C#,它包含來自數據庫類(戰鬥機)的屬性和其他幾個「泛型類型(int,string,datetime等) ...)「屬性 –

+0

Angular並不真正支持您之後的MVVM模式,它最初基於MVC,現在使用組件方法,您希望的是可以綁定到視圖的組件屬性,在這種情況下,這是一個「撲滅」或「撲滅」的集合,即「公開鬥爭:撲滅[]」。您在組件類中定義的任何「公共」屬性均可供視圖訪問。如果你需要在視圖上渲染一個集合,你需要一個'ngFor' https://angular.io/docs/ts/latest/api/common/index/NgFor-directive.html –

+0

如果你包含你的戰鬥。 component.ts代碼我可以嘗試幫助澄清事情。 –