- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个通用的幻灯片组件,它将采用多个组件,然后它会根据特定的用户操作循环播放。
它与 Angular Material 的 stepper component 非常相似.
到目前为止,我发现您可以使用 @ContentChildren
获取对多个(传入的)组件/内容的引用,但我不确定如何实际呈现组件。
这是我创建的示例:https://stackblitz.com/edit/angular-yjfbwb
app.component.html 文件包含一个 <tours></tours>
只要你用 #tour
标记它,你就可以传入任何你想要的标记。 .在 tours.component.ts 中,您会看到我只是循环遍历传入的组件。
但是我实际上如何渲染它们呢?
我用谷歌搜索了一下,似乎我的做法不太可能?但也许我没有正确搜索。理想情况下,我想让我的团队尽可能简单地使用这个旅游组件(基本上就是上面的例子)。
如有任何帮助,我们将不胜感激!
最佳答案
有很多方法可以实现这一目标。
这是一个简单的解决方案。只是为了得到这个想法。您可能希望根据具体问题采取不同的做法。
对于您想在游览组件中投影的每个元素,您都必须创建一个模板。您可以通过 StructuralDirective
执行此操作.
import {Directive, TemplateRef, Input} from '@angular/core';
@Directive({
selector: '[appTour]'
})
export class TourDirective {
@Input('appTour') id: number;
constructor(public template: TemplateRef<any>) {
}
}
标记你的ToursComponent
里面的元素使用指令(不要忘记星号):
<tours>
<p *appTour="123">hello</p>
<p *appTour="1234">world</p>
</tours>
要识别您可以传递的指令,例如 id
浏览您的模板。
现在在你的 ToursComponent
里面注入(inject) TourDirective
通过@ContentChildren
并在 ViewContainerRef | <ng-container>
中传递您想要呈现的模板
import { Component, ContentChildren, QueryList } from '@angular/core';
import { TourDirective } from './tour.directive';
@Component({
selector: 'tours',
template: `
<ng-container *ngFor="let tour of tours.toArray()">
<ng-container *ngIf="tour.id === tourToDisplay">
<ng-container [ngTemplateOutlet]="tour.template"></ng-container>
</ng-container>
</ng-container>`,
})
export class ToursComponent {
public tourToDisplay = 123;
@ContentChildren(TourDirective) tours: QueryList<TourDirective>;
}
关于angular - 我如何使用 @ContentChildren 并只呈现特定的子组件而不是所有子组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51506636/
您好,我目前正在构建一个表,该表将允许其中包含多种列类型。我希望能够像这样使用它: text-column和 icon-column是单独的指令。 我目前有一个名为 col
我一直在寻找 Angular 的文档和源代码,但到目前为止一无所获。 import { ContentChildren, QueryList } from '@angular/core'; i
我正在尝试使用 @ContentChildren 来获取所有带有 #buttonItem 标签的项目。 @ContentChildren('buttonItem', { descendants: tr
我有 3 个组件。 1 个父组件,可以将任何 2 个子组件之一包装在 ng-content 中。我的子组件具有共享功能,因此它们正在扩展具有共享功能的抽象类。 当我尝试使用 ContentChildr
我在 Angular 中有两个像这样的组件 @Component({ selector: 'content-com', template: '' })
我有三个组件:App、Parent 和 Child: 应用组件 @Component({ selector: 'app', directives: [Parent,Child],
我正在尝试创建一个通用的幻灯片组件,它将采用多个组件,然后它会根据特定的用户操作循环播放。 它与 Angular Material 的 stepper component 非常相似. 到目前为止,我发
我想创建一个父指令,它根据子项的值显示或隐藏子项。为此,我采用了父结构指令和带有值的子指令的方法。为简单起见,没有值: 1 2 3 4 要访问 child ,我在父指令中使用以下行
我有一个名为“VerticalTabsDirective”的指令,具有属性- @ContentChildren(MatTabLink) contentChildren: QueryList; @Inp
我正在尝试获取 ng-template 和 input 参数的 TemplateRef。 应用程序组件.html: {{dataItem|json}} 问题是我
contentChildren 与其“父级”之间通信的首选方法是什么? 更新: child 可能不是直接 parent ... 给定一个随机的子列表,由一组包裹: Some other co
我知道您可以通过指定特定的组件类型来获取子组件 @ContentChildren(SpecificComponent)但我可以使用 @ContentChildren(SOMETHING)并获得一个组件
我正在尝试为具有子组件并使用 ng-content 注入(inject)的组件编写单元测试.我试图在我的测试中获取组件的查询列表,以便我可以在下面测试这个函数,但似乎无法填充 QueryList我的单
我的情况是我有一个包含 ng-content 的“项目”组件: @Component({ selector: 'items' template: `` }) 我想获取此内容的值,因此我使用 Con
我正在尝试在 Angular 中创建一个树组件,如下所示: @Component({ selector: 'app-tree', template: `
我正在尝试实现一个搜索组件,能够在特定子项上触发 search(term: string) 函数。如果对子项的搜索失败,此搜索函数将返回 null;如果成功,则返回对子项的引用。 之所以如此,是因为我
我有一个导航列表组件,它试图获取相同类型的子内容。 item1 Item 2 export clas
我有一个 ng1 应用程序,它使用 upgradeAdapter 引导并使用降级的 ng2 组件。 但是我遇到了@ContentChildren 装饰器的问题。似乎@ContentChildren 没
我想创建一个可以按如下方式使用的组件: Slide title Slide content (any html) Slide 2 title ...
我想在 Angular2 中使用 @ContentChildren 在向导中导航。但是当我使用它时,出现了这个错误:“zone.js?fad3:158 未捕获错误:由于未定义查询选择器,无法为“Ext
我是一名优秀的程序员,十分优秀!