当前位置: 首页 > 面试题库 >

Angular 2中的动态模板URL

穆单鹗
2023-03-14
问题内容

我一直在玩弄角2在过去的几天,不知道是否有可能提供一个动态templateUrl@View装饰。

我尝试过将其传递给一个函数并从中返回一个字符串,但是整个函数都变成了字符串。

我之前也没有真正使用过Angular 1.x,所以我不知道我是不是以错误的方式进行操作,但这是否可行,或者有没有更好的方法来创建动态视图?

例如,如果用户未登录,我可能要显示一个表单,但如果用户登录,则要显示文本消息。

这样的事情不起作用:

@Component({
  selector: 'my-component'
})
@View({
  // This doesn't work
  templateUrl: function() {
    return this.isLoggedIn ? 'logged-in.html' : 'logged-out.html';
  }
})
class MyComponent {
  constructor() {
    this.loggedIn = false;
  }
}

任何帮助,将不胜感激。


问题答案:

尽管可能不是最优雅的解决方案,但我使用DynamicComponentLoader和ElementRef将模板值动态分配给组件。实际上,我在寻找一种可以在占位符中添加多个自定义组件的解决方案。

我尝试了shmck概述的函数中的服务注入,由于调用模板函数时服务尚不可用,因此无法使用。确实,this是指Window对象。

简而言之:

一个简单的组件作为要使用的模板

@Component({
  selector: 'dt2-simple-block',
  properties: ["idx"],
  template: `<h1>Simple block for  {{ idx }} </h1>`,
  directives: []
})
class dt2SimpleBlock {
  constructor() {
  }
}

包含所有要添加的组件的Component的构造方法(我的应用程序要求包含多个子元素:

 constructor(loader: DynamicComponentLoader, elementRef: ElementRef) {

  //iterate
  for (var i = 0; i < toSomething; i++) {
      // build the template
      var blockdirective = 'dt2-simple-block'
      var template = '<' + blockdirective + 
                     ' idx="' + this.userBlocks.userHomePanelBlocks[i] +
                     '"></' + blockdirective + '>';
      console.log(template);   // debugging purpose
      var directives = [dt2SimpleBlock];
        loader.loadNextToLocation(toComponent(template, directives), elementRef);
    }

并将辅助功能作为util放置在某处

function toComponent(template, directives = []) {
  @Component({ selector: 'fake-component' })
  @View({ template, directives })
  class FakeComponent { }

  return FakeComponent;
}


 类似资料:
  • 我的angular 2组件有以下模板,但它抛出了一个模板解析错误。 这是错误消息-我的

  • 我们已有的几件: Post 模型定义在 models.py 中,我们有 post_list views.py 和添加的模板中。 但实际上我们如何使我们的帖子出现在我们的 HTML 模板上呢? 因为那是我们所想要的: 获取一些内容 (保存在数据库中的模型) 然后在我们的模板中很漂亮的展示,对吗? 这就是 views 应该做的: 连接模型和模板。 在我们的 post_list 视图 中我们需要获取我们

  • 我想创建一个模板随机数生成器类,它可以是整数类型,也可以是浮点类型。为什么?对于赋值,我编写了一个累积函数(本质上与std::acculate相同),我想制作一个可以是任意整数或浮点类型的测试工具(例如,无符号| short | long | long long int、float、double)。我们一直在研究模板,我试图通过使用模板编程来做出动态编译时决策。我可能用了错误的方法来处理这个问题-

  • 问题内容: 我必须遵循以下方案: python字典的python列表列表中的 每个元素都是一个python字典,看起来像这样: 现在,我希望所有字典作为主模板中的列表。但是,每个词典的内容应由子模板呈现。应使用哪种模板来呈现内容,应由字典的type变量定义。 关于使用Jinja2如何完成此操作的任何提示(如果有帮助,我正在通过Flask使用它。) 谢谢! 问题答案: 如果有人需要它: 然后可以在模

  • 我有一个我在离子中重新开发的应用程序,大约一年前我在离子v1中做过。我有多个模板类型,用户将从中选择,我想做一个动态组件,根据用户配置值加载其templateURL。因此,除了加载组件和获得正确的模板之外,一切都在进行中,除了当我运行应用程序时,它会给出模板错误,就好像它不知道ngModel是一个角属性一样。这是我所拥有的: 这是我的模板: 以下是我在Chrome开发工具中的错误: 无法绑定到ng

  • 问题内容: 我在模板中有一个需要模板的自定义标签。该属性将由范围填充,然后需要正确的模板。 根据赞美诗的星期和日期,它有多种版本。我期望使用该指令来填充正确的部分。不会读取变量。 有在摘录目录多个文件被标记,… 问题答案: 您可以使用指令。 尝试这样的事情: UPD。 用于观看属性