Директива по уценке Angulardart не работает - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь сделать следующее:

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 будет иметь значение содержимого "уценки", но оно не имеет значения, прежде чем войти в эту директиву.

        <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 голосов
/ 28 февраля 2019

просто измените способ установки атрибута уценки ... попробуйте:

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

или

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

// somewhere in your class
String myVar = '**my message**';
0 голосов
/ 28 февраля 2019

Сообщение об ошибке вообще не относится к директиве, а к ее использованию в <div [markdown]="'{{report.summary}}'" >{{report.summary}}</div>.

Используйте либо [markdown]="report.summary" или markdown="{{report.summary}}", но не оба.Два опубликованных мной варианта эквивалентны (см. здесь ).

0 голосов
/ 27 февраля 2019

Dart автоматически блокирует небезопасный контент.Вы должны были бы специально обходить безопасность.Один из способов сделать это можно здесь: https://webdev.dartlang.org/api/angular/angular.security/DomSanitizationService-class

...