iT邦幫忙

0

angular [innerHTML] 與 Component的template

Zaku 2018-05-11 21:16:462816 瀏覽

目前在寫部落格,部落格原先是想每篇文章都用一個Component的template去做,但發現這樣當許多內部結構要改或要增加時很痛苦,每個template都要去改,後來把變成單一個Component的template,把頁面它拆成不同的部分,像頭中尾之類的片段,後台去撈出各個部位的html檔,在[innerHTML]到指定區塊,一來也不用建一堆component。

但這樣又衍生一個問題,每個獨立的Component與template瀏覽器似乎會暫存圖片等等,
跑過一次後再跑很快,但要是用[innerHTML],每個區塊都會再重新載入,明顯比較不流暢。
尤其是當圖片多的時候。

請問有沒有推薦什麼方法。還是基本上就是這樣用?

Rach iT邦新手 5 級 ‧ 2018-06-21 08:44:55 檢舉
hi,不知道你解決了沒,一個component應該就可以處理了,使用`@input`傳進你的文章編號,在`component` rendered應該就可以處理
Zaku iT邦新手 5 級 ‧ 2018-06-21 09:55:35 檢舉
還沒,近期工作比較忙暫時停擺。感謝,可否再多做說明呢?

1 個回答

0
暐翰
iT邦大師 9 級 ‧ 2018-05-12 13:54:27

include其他component可以達到你要的效果

舉例:

我有個專案
需要多個內容component
每個component都要包含一樣的header跟footer

這時候可以把header跟footer各做一個component
讓其他內容component去include

這樣只要修改header.ts全部的內容都會跟著一起修改
不用每個.ts去改template

Code:

內容

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  template: `
<header-app></header-app>
<p>
  我是內容 <br>
  你好IT邦幫忙
</p>  
<footer-app></footer-app>
  `
})
export class AppComponent  {
}

Header

import { Component } from '@angular/core';

@Component({
  selector: 'header-app',
  template: `
    <div style="background-color: yellow;">
      我是Header
    </div>
  `
})
export class HeaderLayoutComponent  {
}

Footer

import { Component } from '@angular/core';

@Component({
  selector: 'footer-app',
  template: `
    <div style="background-color: red;">
      我是Fotter
    </div>
  `
})
export class FooterLayoutComponent  {
}


DEMO連結


你先看一下,有疑惑的地方再跟我說 :-)

Zaku iT邦新手 5 級 ‧ 2018-05-12 22:03:14 檢舉

對我的概念大概是這樣,假定分成三個區塊,header, footer跟”內容“,我的意思是說,問題主要在於”內容“的部份,類似像是大大文中的
<p>我是內容 <br>你好IT邦幫忙</p>
這段可能就相當於部落格的“內容”,如果每個“內容”的區塊都是一個compnoent,那每寫一篇新的文章,就要建立一個新的compnoent,而且可能只能靠router去導向,但用[innerHTML]雖然可以達到動態去取一個靜態檔案的”內容“進來,但就是每次進入都要重新讀取效能比較差。有其他方法讓他可以動態放進來嗎?或有辦法動態太呼叫多個component,去呼叫文章1號...文章n號:<content-1-app></content-1-app>...<content-n-app></content-n-app>。還是就真的只能取捨二擇一。

暐翰 iT邦大師 9 級 ‧ 2018-05-17 09:32:25 檢舉

不好意思 這禮拜休假在旅遊
可以使用dynamic templateUrl

我要發表回答

立即登入回答