2

我正在尝试设置标签的样式app.component.htmlapp.component.ts但它不起作用。有类似的问题和文章,但即使是接受的答案也不适合我。这是我的代码。

app.component.html

<div class="container">
  <div class="row pt-5">
    <div class="col-md-12 col-lg-12 col-sm-12 bg-light">
      <form [formGroup]="editorForm" (ngSubmit)="onSubmit()">
        <div class="form-group">
          <label for="editor">
            <h3>Editor</h3>
          </label>
          <quill-editor [style]="editorStyle" [modules]="config" formControlName="editor"></quill-editor>
        </div>
        <button class="btn btn-primary mt-3">Submit</button>
      </form>
    </div>
  </div>
</div>

而我app.component.ts的是

import { Component, OnInit } from '@angular/core';
import { FormGroup, FormControl } from '@angular/forms';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {

  editorForm: FormGroup;

  editorStyle = {
    height: '300px',
    backgroundColor: '#ffffff'
  }

  config = {
    toolbar: [
      ['bold', 'italic', 'underline'],
      ['code-block']
    ]
  }

  ngOnInit() {
    this.editorForm = new FormGroup({
      'editor': new FormControl(null)
    })
  }

  onSubmit() {
    console.log('submit called');
    console.log(this.editorForm.get('editor').value);
  }
}

我尝试过的事情:

[style]="editorStyle"//不工作

然后我尝试直接[style.backgroundColor]="'red'"在 value 周围使用和不使用额外引号进行操作[style.backgroundColor]='red'

我也试过[ngStyle]="{backgroundColor: 'red'}"[ngStyle.backgroundColor]="'red'"'。但没有什么对我有用。问题只是 witheditorStyle而不是 with config。我也收到了这个警告。

警告:清理不安全的样式值 [object Object](参见http://g.co/ng/security#xss)。

4

3 回答 3

4

Quill 编辑器使用自定义styles字段来传递样式,因此

<quill-editor [style]="editorStyle" [modules]="config" formControlName="editor"></quill-editor>

你应该指定

<quill-editor [styles]="editorStyle" [modules]="config" formControlName="editor"></quill-editor>

这与标准 dom 元素的样式不同

https://github.com/KillerCodeMonkey/ngx-quill

于 2019-08-23T23:11:13.250 回答
0

可能你有 shadow Dom 的问题,它阻止了样式应用于 shadow dom 下的组件。更详细的解释在这里: https ://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM

Angular 有自己的方式来处理 shadow dom,它是封装 https://angular.io/api/core/ViewEncapsulation

用这个修改你的 app.component @Component 注释并试一试

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
  encapsulation: ViewEncapsulation.None
})

这是不可取的,因为 shadow dom 对于控制样式非常有用。在您的 app.component 中使用“无”封装可能会有风险,因此我认为更好的解决方案是将您的羽毛笔编辑器包装在一个自定义组件中,该组件的唯一责任是呈现编辑器。这样,您仅将 ViewEncapsulation.None 应用于此组件。

于 2019-08-23T22:30:27.723 回答
-1

我给你试试这个:

您可以在那里编辑以纠正您的问题!

这里

于 2019-08-23T22:35:35.750 回答