2017-10-12 219 views
0

我以爲我會試用一點與SEO使用Angular4/Node.js,但已經來過一個挑戰。客戶端異步。請求與服務器端渲染

Angular Universal使我有可能做服務器端渲染,所以我可以讓我的元關鍵字,標題,圖像網址等注入到HTML之前,我的網頁瀏覽器 - 很棒!現在的挑戰是,在某些時候,我希望至少能夠在客戶端異步執行一些東西,例如。獲取一些JSON數據,甚至捕獲一個Angular click事件。

我似乎無法做到這樣的東西,而使用下面的例子。

home.component.ts

import { Component, OnInit } from '@angular/core'; 
import { Http, Response } from '@angular/http'; 

@Component({ 
    selector: 'home', 
    template: `<button (click)="fetch();">Fetch some json</button>`, 
    styleUrls: ['./home.component.scss'] 
}) 
export class HomeComponent implements OnInit { 

    constructor(
    private _http: Http 
) {} 

    ngOnInit() {} 

    public fetch(){ 
    console.log("Clicked");    // Does not happen 

    this._http.get('./i18n/da.json') 
    .subscribe((r: Response) => { 
     console.debug(r.json());   // Also not happening 
    }); 
    } 
} 

有什麼沒有辦法像這樣使用通用的服務器端渲染時將有可能?你們會如何執行此操作?

乾杯!

回答

1

我真的不知道你是什麼意圖,但我認爲這可能是其中之一:

  1. 你想要做一些東西,當用戶點擊服務器端渲染按鈕角接管之前?那麼你正在尋找Preboot
  2. 您想在服務器端呈現期間從服務器獲取數據,然後在客戶端使用這些數據?那麼你可能正在尋找TransferState再水化API。

  3. 您的應用程序出現問題,它根本沒有響應按鈕點擊。即使使用SSR,點擊仍然可以使用。檢查控制檯是否有錯誤。

+0

3.是正確的答案:)。我的軟件包未包含在應用程序中,並且未產生任何錯誤。感謝你說它應該按照預期工作,那是什麼使我朝着正確的方向發展。 – iMe