2017-08-17 1 views
0

私はインスタントメッセンジャーを作成します。私の機能(スレッド)をクリックすると、ディスカッションをクリックしてディスカッションを見ることができます。ユーザーは、2つ以上のチャットウィンドウを同時に開くことはできません。 2つのチャットウィンドウが開いているとき(this.threadService.windows.length === 2)、最初のウィンドウを閉じて新しいウィンドウを表示する必要があります。古いパラメータを関数に保存する

私はその後、私の関数のパラメータcloseOldThread(oldThread)として、それを入力するために、変数にこの最初のウィンドウを保存する必要があり

clicked(thread: Thread): void { 
this.newWindow = true; 

let oldThread: Thread; 
if(this.threadService.windows.length === 2) { 
    this.closeOldThread(oldThread); 
} 
if (!this.thread.isOpen) { 
    thread = this.chatService.openThread(thread); 
    this.chatService.setCurrentThread(thread); 
    this.thread.isOpen = true; 
} 
oldThread = thread; 
} 

////

closeOldThread(thread: Thread): void { 
let index = this.threadService.windows.indexOf(thread); 
this.threadService.windows.splice(index, 1); 
this.thread.isOpen = false; 
this.newUser = false; 
this.newWindow = false; 
} 

それは可能ですか? 私の場合、oldThreadは未定義です。

答えて

1
clicked(thread: Thread): void { 
    this.newWindow = true; 
    if(this.threadService.windows.length === 2) { 
     // get the previously opened chat window 
     let oldThread = this.threadService.windows[0];    
     this.closeOldThread(oldThread); 
    } 
    if (!this.thread.isOpen) { 
     thread = this.chatService.openThread(thread); 
     this.chatService.setCurrentThread(thread); 
     this.thread.isOpen = true; 
    } 
} 
+0

これは機能しません。 ifループ(_this.threadService.windows.length === 2_)で変数(_this.oldThread_)をテストすると、 'undefined'と等しくなります。 – Floriane

+0

'this.threadService.windows'には何が格納されていますか?型 'Thread'のオブジェクト? – Faisal

+0

スレッドの配列がありません: 'windows:Thread [];' – Floriane

関連する問題