添加内容并立即以真实服务器的角度显示它
我从角度跟随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')) 
); 
} 
回答:
创建任务,但我希望能帮助你。通常情况下,我们有一个界限,服务和组件
//An interface with the structure of the data interface IData { 
    prop1:number 
    prop2:string; 
} 
//A service 
@Injectable() 
export class DataService { 
    urlBase:string="....."; 
    constructor(private http: HttpClient) {} 
    getData(): Observable<IData[]> { 
     return this.http.get<IData[]>(urlBase, { params: params }); 
    } 
    postData(data:Idata):Observable<any>{ 
     return this.http.post<IData>(urlBase,data); 
    } 
//Your component 
@Component({ 
    selector: 'app-component', 
    templateUrl: './app-component.html', 
    styleUrls: ['./app-component.css'] 
}) 
export class AppComponent implements OnInit { 
    lista:IData[]; //<--the data we display in our template 
    private subscription: Subscription; //<--a variable to save a subscription 
    constructor(private dataService:DataService){} 
    ngOnInit() 
    { 
     fillData(); //<--cal a function to fill this.lista 
    } 
    fillData() 
    { 
     if (this.subscription) //<--if exist a subscription, remove 
      this.subscription.unsubscribe(); 
     subscription=this.dataService.getData().subscribe((data:IData[])=> 
      {this.lista=data;}); 
    } 
    .... 
    //In your submit 
    submit(form:any) 
    { 
     if (form.isValid) 
     { 
      let data=form.value; //<--normally here transform de data from form 
           //in a object type IData 
      this.dataService.postData(data).subscribe(result:any) 
      { 
       //here you choose 
       this.lista.push(data) //<--you add manually the data 
       //or call fillData() 
       this.fillData(); 
      } 
     } 
    } 
} 
以上是 添加内容并立即以真实服务器的角度显示它 的全部内容, 来源链接: utcz.com/qa/261867.html



