【发布时间】:2019-11-29 20:37:00
【问题描述】:
我必须使用 innerHtml 指令,但它忽略了元素的样式,所以我创建了一个自定义的 safeHtml 管道来渲染元素的 CSS,我使用 innerHtml 将 HTML 元素注入我的 dom。但是点子不起作用。
app.module.ts
import { ViewComponent } from './view/view.component';
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';
import { CategoryComponent } from './category/category.component';
import { AboutComponent } from './about/about.component';
import { ContactComponent } from './contact/contact.component';
import { UserComponent } from './user/user.component';
import { SafeHtmlPipe } from './view/post.pipe';
@NgModule({
declarations: [
AppComponent,
HomeComponent,
ViewComponent,
CategoryComponent,
AboutComponent,
ContactComponent,
UserComponent,
SafeHtmlPipe
],
imports: [BrowserModule, AppRoutingModule],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {}
post.pipe.ts
import { DomSanitizer } from "@angular/platform-browser";
import { Pipe, PipeTransform } from "@angular/core";
@Pipe({ name: "safeHtml" })
export class SafeHtmlPipe implements PipeTransform {
constructor(private sanitized: DomSanitizer) {}
transform(value: string) {
return this.sanitized.bypassSecurityTrustHtml(value);
}
}
view.component.ts
import { Component, OnInit } from "@angular/core";
import { ActivatedRoute } from "@angular/router";
@Component({
selector: "app-view",
templateUrl: "./view.component.html",
styleUrls: ["./view.component.scss"]
})
export class ViewComponent implements OnInit {
id: number;
card = {
title: `Title here`,
shortDesc: `Short desc`,
author: `Author`,
thumbnail: `Thumbnail URL`,
datePublished: `date`,
content: `card content`
};
constructor(private route: ActivatedRoute) {}
showPostContent() {
document.getElementById("postContent").innerHTML = this.card.content;
}
ngOnInit() {
this.route.params.subscribe(params => {
this.id = params.id;
});
// this.showPostContent();
}
}
view.component.html
<div [innerHtml]="card.content | safeHtml"></div>
我该如何解决这个问题?
【问题讨论】:
-
卡片内容的样式是在父组件css中指定的还是内联在卡片内容中?
标签: angular