http postの後にデータ配列を更新する正しい方法を知っています。angularjs2:http-postの後の配列の更新
私は何を持っていることは、これらの方法でトランザクション・サービスである:
getUserTransactions(user_id) {
return this.http.get('http://localhost:3000/users/' + user_id + '/transactions', { headers: contentHeaders })
.map(res => res.json());
}
createTransaction(balance, amount, user_id, paymethod_id, redirect) {
let body = JSON.stringify({ balance, amount, user_id, paymethod_id });
this.http.post('http://localhost:3000/transactions', body, { headers: contentHeaders })
.subscribe(
response => {
this.router.parent.navigateByUrl(redirect);
},
error => {
alert(error.text());
console.log(error.text());
}
);
とコンポーネント
export class HomeComponent {
public transactions: Transaction[];
constructor(
private router: Router,
private loginService: LoginService,
private trnService: TransactionService
) {
if (!loginService.isLoggedIn())
this.router.parent.navigateByUrl('/logout');
var userid = this.loginService.getUserId();
this.trnService.getUserTransactions(userid).subscribe(transactions => this.transactions = transactions);
return;
}
makeTransaction(){
var userid = this.loginService.getUserId();
this.trnService.createTransaction(10, 2, userid, 1, "/home");
}
}
HTML:だから、最初
<tbody>
<tr *ngFor="#transaction of transactions; #index=index">
---
、「/ホームに移動して「ユーザートランザクションの配列をロードしています。
ボタンをクリックすると、makeTransaction()
メソッドが呼び出されます。これはサービスTransactionService -> createTransaction
によってhttp投稿要求を実行します。私はトランザクションが正常に終了した後に "/ home"にリダイレクトすると思ったが、これはうまくいきませんでした。(私はコンストラクタが再度呼び出されないと仮定します)何とかサービスからpublic transactions: Transaction[];
を更新できますか?多分リファレンスを作っていますか?
「これはうまくいかない」という意味はどういう意味ですか? –
私はブラウザでページを完全にリロードする場合に限り、配列はリロードされません。コンストラクタが再び呼び出されないと仮定します。 – user1908375
あなたはそれらが作成されていると確信していますか? – uksz