2017-06-21 68 views
1

我目前正在製作一種無線電總機。 我有一個服務中的所有車站信息。在通過組件獲取後,我會在html文件中列出所有內容。在按鈕上點擊不同的音頻點擊角度

在一個按鈕上單擊,站點URL將放入一個變量中,然後將其加載到音頻src中。 該音頻源已加載並開始播放。

我有一些問題,雖然把一切都放在1按鈕。如果我先用1個按鈕將變量加載到變量中,然後用另一個按鈕激活,它就可以工作。 但是,當我試圖把兩個在1按鈕,它似乎並沒有刷新變量。

我的組件:

audio: any= new Audio(); 
    audios: any[]; 
    audiosource: string = ''; 

    //methods 
    GetStation() 
    { 
     console.log('works'); 
     this.audio.src = this.audiosource; 
     this.audio.load(); 
     this.audio.play(); 
    } 

    //constructor 
    constructor(private soundwaveService: SoundwaveService) 
    { 
     this.audios = soundwaveService.getStations(); 
    } 

我的HTML:

<div *ngFor="let audio of audios, let i = index"> 
    <div (click)="audiosource=audio.url"> 
     <button (click)="GetStation()">{{audio.station}}</button> 
    </div> 
</div> 
--- {{audiosource}} --- 
+0

你想在點擊按鈕時播放'audio.url'音軌,對吧? – Abrar

回答

0

在你的HTML模板,通知你觸發click()GetStation()功能,但你不傳遞任何引用到audio你想要玩。此外,div上的(click)處理程序實際上是沒有用的。

代碼修改本:現在

<div *ngFor="let audio of audios, let i = index"> 
    <div> 
     <!--pass the audio you want to play in the click event's handler--> 
     <button (click)="GetStation(audio)">{{audio.station}}</button> 
    </div> 
</div> 

,在你的組件類:

GetStation(audio) 
    { 
     this.audio.src = audio.src; 
     this.audio.load(); 
     this.audio.play(); 
    } 

這將播放已被點擊音軌。

+0

我不需要傳遞audio.url嗎?該服務包含'電臺'(這是電臺名稱)和'網址'(它具有流媒體位置) – user3110254

+0

我似乎無法得到此工作。 – user3110254

+0

得到它的工作,感謝很多:) – user3110254