項目環境Angular:css
HTML頁面上的代碼:html
<div id="tenementBillTable" class="dialog-content"> <div *ngFor="let item of dataList" class="table-container"> <div class="table-header">電費清單</div> <div class="table-info"> <div class="clearfix"> <span class="fl">戶 名:</span> <div class="fl">{{item.tenementName}}</div> </div> <div class="clearfix"> <span class="fl">電費年月:</span> <div class="fl">{{item.month}}</div> </div> </div> <div class="table-wrapper"> ... </div> </div> </div>
ts文件中:html5
printList(){ this.tenementBillTable = this._elementRef.nativeElement.querySelector("#tenementBillTable"); document.body.style.visibility = "hidden"; this.tenementBillTable.style.visibility = "visible"; window.print(); document.body.style.visibility = "visible"; }
而後再用css控制打印分頁npm
page-break-before,page-break-after屬性控制分頁。api
不過在實際應用中,我須要打印的是彈框中的內容,使用原生的方法打印,頁面的樣式沒法調整,故放棄使用這個方法。app
項目中引用jQuery不方便,也沒有找到具體文檔,因此這個方法還沒試過。this
安裝依賴 spa
npm install --save essence-ng2-print@latest
html文件中引入插件
<essence-ng2-print #print [printHTML]="tenementBillTable" [showBtn]="false" [printCSS]="printCSS"></essence-ng2-print>
在module裏面引入code
import {EssenceNg2PrintModule} from "essence-ng2-print";
@NgModule({
imports: [
EssenceNg2PrintModule
]
})
組件中引入
import { EssenceNg2PrintComponent } from "essence-ng2-print";
再使用
@ViewChild("print") printComponent: EssenceNg2PrintComponent;
而後須要設置打印時使用的css文件。
this.printCSS = ["assets/css/print.css"];
不過打印的時候也仍是會有分頁的問題,根據須要,在css文件中添加了page-break-after樣式來控制打印分頁。
.table-container:nth-child(3n) { page-break-after: always; }
其餘的設置根據api文檔裏面可作具體的設置。
https://www.npmjs.com/package/essence-ng2-print
Inputs mode(?string='iframe') - 打印模式。可選的值:iframe,popup standard(?string='html5') - 彈出窗口的網頁文檔標準,只適用於mode = 'popup'。可選的值:strict(嚴格模式),loose(兼容模式),html5(HTML5) popTitle(?string='') - 彈出窗口的標題,只適用於mode = 'popup' showBtn(?boolean=true) - 若是爲true將顯示打印按鈕 btnText(?string='打印') - 打印按鈕顯示的文本 btnClass(?Object={"print-btn": true,"print-btn-success": true};) - 打印按鈕class,傳值與[ngClass]同樣 printHTML(string|HTMLElement) - 打印的內容 printStyle(?string) - 打印內容style。將寫進打印頁面的style標籤中 printCSS(?Array<string>) - 打印內容css文件路徑。將在打印頁面生成link標籤,支持絕對/相對路徑(相對於當前路由地址),建議用絕對路徑 Outputs printComplete - 打印完成的事件 Instance Method print - 開始打印內容