角度警告:清理HTML剥离了一些内容?

时间:2017-09-03 21:12:09

标签: javascript angular typescript

嘿我试图通过在模态体中编写html来显示模态中的搜索栏,如下所示:

onClick() {
      const dialogRef = this.modal.alert()
        .size('lg')
        .showClose(true)
        .title('A simple Alert style modal window')
        .body(`
          <div class="card container-fluid col-xs-10">
          <div class="card-block">
              <div class="form-group row">
                  <div class="col-5">
                      <ng2-completer class="completer-limit"
                                     [(ngModel)]="searchStr"
                                     [datasource]="dataService"
                                     [minSearchLength]="0"
                                     [inputClass]="'form-control'"
                                     [placeholder]="'Enter the class you would like to add'"
                                     [matchClass]="'match'"
                                     [autofocus]="true"
                                     [textSearching]="false">
                      </ng2-completer>
                  </div>
              </div>
          </div>
      </div>`)
        .open();
    }

.body中的html尝试引用与onClick函数相同的.ts文件中的数据。作为参考运行,相应的html文档中的这个html工作得很好(不是模态)。在模态中添加通用html也很好(简单文本)。但是,当我添加此代码时,搜索栏不会呈现,并且在开发人员控制台中会显示:警告:清理HTML会删除一些内容(请参阅http://g.co/ng/security#xss)。任何人都知道发生了什么事吗?对不起,如果这个问题很难,因为我使用的是套餐。它们是搜索栏的ng2-completer和模态的ngx-modialog。我认为这个问题可能是根本性的,与程序包无关,但这就是我要求stackoverflow的原因。问题是模态体中的html无法引用.ts文件这个onClick函数,因为模板指向一个单独的html文件,或者我是否仍然能够引用.ts文件中的对象?

1 个答案:

答案 0 :(得分:2)

问题是您将字符串中的HTML传递给modal.alert().body()函数

所以Angular不相信它。它可能是代码注入的来源,因此被消毒。你需要找到另一种方式 - 你的模态是否接受模板或组件作为参数,如果是这样,那将是这样做的方式。