如何检测对ng内容的异步更改

阿维亚德·P。

我制作了一个使用marked包来呈现降价内容的组件,事实是当异步事件更改其ng-content元素时,它不会重新呈现自身

这是代码

import {Component, ElementRef, AfterContentInit} from 'angular2/core';
declare var marked: any;

@Component({
    selector: 'markdown',
    template:
    '<div style="display:none;">' +
    '    <ng-content></ng-content>' +
    '</div>' +
    '<div class="markdown" [innerHTML]="output"></div>'
})
export class MarkdownComponent implements AfterContentInit {
    output: string;

    constructor(
        private element: ElementRef) {
    }

    ngAfterContentInit() {
        const c = this.element.nativeElement.childNodes;
        this.output = marked(c[0].textContent);
    }
}

这是HTML代码段:

<markdown>{{info}}</markdown>

这是异步更新:

updateInfo(text: string) {
    this.svc.update(this.info, text).subscribe(
        data => this.info = data.newText);
}

问题是,当this.svc.update事件触发时,info变量会更改值,但markdown不会重新呈现组件。

谢谢!

解析度

遵循接受的答案的建议(感谢Gunter),这是新组件,它更加精简和简单:

import {Component} from 'angular2/core';
declare var marked: any;

@Component({
    selector: 'markdown',
    template: '<div class="markdown" [innerHTML]="process(md)"></div>',
    inputs: ['md']
})
export class MarkdownComponent {
    md: string;

    process(s: string) {
        if (!s) return '';
        return marked(s);
    }
}

这是新的HTML:

<markdown [md]="info"></markdown>

完美的作品!:)

贡特·佐赫鲍尔(GünterZöchbauer)

添加@Input() content;和使用类似的组件

<markdown [content]="info"></markdown>

会更容易。

另外,对于此特定用例,MutationObserver应该可以很好地工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何找到哪个异步操作触发ngZone(导致更改检测)?

来自分类Dev

如何检测异步方法主体中的源代码更改

来自分类Dev

如何检测contenteditable div的内容是否已更改

来自分类Dev

检测新tr或内容更改

来自分类Dev

如何在ng-repeat中更改单个div的内容

来自分类Dev

如何检测对PHAuthorizationStatus的更改?

来自分类Dev

iOS-检测CALayer内容的更改

来自分类Dev

如何检测何时加载内容?

来自分类Dev

在RecyclerView中检测到不一致,如何在滚动时更改RecyclerView的内容

来自分类Dev

检测ng-model更改为指令

来自分类Dev

如何知道异步检测异步子进程是否已终止

来自分类Dev

如何快速更改内容?

来自分类Dev

如何更改 SpannableString 内容?

来自分类Dev

角度:从异步获取数据;我不必强制更改检测

来自分类Dev

如何让SwiftUI检测对Dictionary的更改?

来自分类Dev

如何检测文件更改VBS

来自分类Dev

jQuery:异步如何顺序加载内容

来自分类Dev

如何在React上渲染异步内容?

来自分类Dev

如何在html列表中检测到自动换行符并更改文本内容,从而避免换行符?

来自分类Dev

Netty-如何检测/提取帖子内容?

来自分类Dev

如何检测div的内容何时被卸载?

来自分类Dev

如何检测和获取UITextField内容(快速)

来自分类Dev

如何检测页面是否更新了内容?

来自分类Dev

如何检测iframe内容元素的加载请求?

来自分类Dev

如何检测没有内容的行?

来自分类Dev

如何检测ACF行内容类型

来自分类Dev

如何检测内容是否为 Netflix 原创?

来自分类Dev

检测来自node.js的文件内容更改

来自分类Dev

在服务器响应之前检测iframe内容更改

Related 相关文章

热门标签

归档