【问题标题】:Angular 4: Updating the viewAngular 4:更新视图
【发布时间】:2017-11-28 07:59:12
【问题描述】:

总的来说,我对 Web 开发非常陌生,但我正在尝试构建我的网站,但遇到了以下我无法解决的问题。我正在使用角度 4 我有一个 div 突出显示我的 html 文件中的一些代码:

<div *ngIf="step1Updated">
  <prism-block 
    [code]="step1" 
    [language]="'python'">
  </prism-block>
  {{ step1 }}
</div>

在我的打字稿文件中:

step1Updated = false;
step1 = '';

onStep1(fileType: string) {
    this.step1 = this.step1service.returnCode(this.language, fileType);
    this.step1Updated = true;
}

现在在我的 html 页面上,当我从执行onStep1() 的不同内容的按钮中单击时,我的字符串插值中的内容发生了变化,{{ step1 }},但我的prism-block 中的内容没有。我可以看到这是因为我们需要双向数据绑定,但我尝试将[(ngModel)]="step1" 双向数据绑定放在 prism-block、div 等中......希望它能够捕获更新然后更新该块,与将代码放入[(code)] 相同,但都导致错误..

任何帮助或建议将不胜感激!

【问题讨论】:

  • 你不能在forms之外使用ngModel,显示你的prism-block组件定义
  • 我没有创建 prism-block 组件,它是通过npmjs.com/package/angular-prism 安装的,导入和声明在 app.module.ts 中。
  • prism 组件有问题,你能装个笨蛋吗?
  • 我从未使用过 plunker,我只是尝试过,但它与我一直在使用的角度完全不同。我的棱镜工作正常,它可以很好地突出显示多种语言的代码,只要更改内容的字符串,它不会显示更新的内容。
  • 把你创建的插件的链接放在这里

标签: html angular typescript data-binding


【解决方案1】:
here you need to load PrismComponent dynamically to update its view.refer my plunker(http://plnkr.co/edit/tEgnnS) code.


    onStep1(fileType: string) {
    const crf = this.cfR.resolveComponentFactory(PrismComponent);
    this.cc.clear();
    const cf = this.cc.createComponent(crf);
    (<PrismComponent>cf.instance).code = this.step1service.returnCode(this.language, fileType);
  }

【讨论】:

  • 引用app模板及其组件,不要忘记在app模块中添加entryComponent
  • 完美运行,重复最后一行以动态加载语言。现在我将研究您的代码以完全理解它。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-17
  • 1970-01-01
  • 2017-11-23
  • 1970-01-01
相关资源
最近更新 更多