-1
我從角度跟隨tour of heroes。現在我試圖用Drupal作爲後端在現實生活中做到這一點。添加內容並立即以真實服務器的角度顯示它
一切工作正常,所有的GET,POST,PUT和DELETE方法都很好......但
當我創建的內容,只有這樣,才能看到它反映是通過更新頁面所以我問題是:如何創建內容並立即在角度頁面中顯示它。
我不想更新頁面,我只是想看到反映的新內容。
[編輯]
一些代碼示例
Component.html
<h5>Add Task</h5>
<form (ngSubmit)="onSubmit(taskName.value, taskBody.value)" #heroForm="ngForm">
<div class="form-group">
<label for="name">Task Name</label>
<input type="text" class="form-control" id="name"
required name="name" #taskName>
</div>
<div class="form-group">
<label for="body">What to do</label>
<input type="text" class="form-control" id="body" name="body" #taskBody>
</div>
<button type="submit" class="btn btn-success">Submit</button>
打印代碼:這是我想更新立即
<li *ngFor="let task of tasks" class="d-inline-block col-md-12">
<a routerLink="/task/{{task.id}}" > {{task.name}}</a>
<!-- <span class="close big"></span> -->
<button class="close big" title="delete task"
(click)="delete(task)">x</button>
</li>
什麼
調用類組件的get任務功能,到service.ts
getTasks(): void {
this.taskService.getTasks()
.subscribe(Tasks => this.tasks = Tasks);
}
從表單中的數據發送到服務
onSubmit(name: string, body:string): void {
let task: any = {
type: [],
title: [],
body: []
};
task.type.push({target_id: "task"});
task.title.push({value: name});
task.body.push({value: body});
this.taskService.addTask(task)
.subscribe(task => {
this.tasks.push(task);
// console.log(JSON.stringify(task));
});
}
獲取任務功能,在服務
/** GET task by id. Will 404 if id not found */
getTask(id: number): Observable<Task> {
const url = `${this.taskUrl}/${id}`;
const returnGet = this.http.get<Task>(url);
// console.log (returnGet);
return returnGet
.pipe(
map(tasks => tasks[0]), // returns a {0|1} element array
tap(h => {
const outcome = h ? `fetched` : `did not find`;
this.log(`${outcome} hero id=${id}`);
}),
catchError(this.handleError<Task>(`getTask id=${id}`))
);
}
在我使用的不是英雄的榜樣之旅的service.ts
addTask (task: Task): Observable<Task> {
const url = `${this.mainUrl}/entity/node`;
return this.http.post<Task>(url, task, httpOptions).pipe(
tap((task: Task) => this.log(`added task w/ id=${task.id}`)),
catchError(this.handleError<Task>('addtask'))
);
}
如果通過POST請求創建內容,創建的內容應包含在您的後端響應中。使用該響應將是呈現新內容的正常方式。另一種方法是通過套接字 –
獲取從後端推送到客戶端的元素,您可以再次加載數據或更新數組(或使用任何其他) – Eliseo
@ Jota.Toledo是的我可以從後端,與get方法我可以看到的內容,但它不會立即更新,我需要按F5。我會尋找一些插座的例子。 – ValRob