Angulardart Markdown指令不起作用

时间:2019-02-27 19:50:43

标签: dart angular-dart

我正在尝试执行以下操作:

import 'dart:html';

import 'package:angular/angular.dart';
import 'package:markdown/markdown.dart' as md;

@Directive(selector: '[markdown]')
class MarkdownDirective {
  @Input('markdown')
  String marked;

  MarkdownDirective(Element el) {
      final html = md.markdownToHtml(marked);
      print(el.innerHtml); // this is empty
      print(html); // obv null
      el.setInnerHtml(html);
  }
}

我希望innerHtml具有“ markdown”内容的值,但是在输入此指令之前它为null。

        <div markdown>{{report.summary}}</div>

我也尝试过,没有运气

        <div [markdown]="'{{report.summary}}'" >{{report.summary}}</div>

Got interpolation ({{}}) where expression was expected at column 1 in ['{{report.summary}}']-无法完全理解为什么它不起作用。/

3 个答案:

答案 0 :(得分:1)

只需更改设置markdown属性的方式即可...尝试:

<div markdown="**my message**"></div>

<div [markdown]="myVar"></div>

// somewhere in your class
String myVar = '**my message**';

答案 1 :(得分:1)

该错误消息与指令完全无关,而是与<div [markdown]="'{{report.summary}}'" >{{report.summary}}</div>中使用的错误消息相同。

使用[markdown]="report.summary"markdown="{{report.summary}}",但不能同时使用。我发布的两个变体是等效的(请参见here)。

答案 2 :(得分:0)

Dart自动阻止不安全的内容。您将需要专门绕过安全性。一种执行此操作的方法是在这里:https://webdev.dartlang.org/api/angular/angular.security/DomSanitizationService-class