Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度2显示混合元素数组_Javascript_Html_Arrays_Angular - Fatal编程技术网

Javascript 角度2显示混合元素数组

Javascript 角度2显示混合元素数组,javascript,html,arrays,angular,Javascript,Html,Arrays,Angular,我想完成的是显示数组中的所有元素。该数组包含各种类型的组件(是的,组件),所有这些组件都是从抽象类扩展而来的。这是我的密码: 抽象类插件 export abstract class Plugin { constructor() { } } 手表组件 @Component({ selector: 'watch', template: ` {{clock | async | date:'medium'}} ` }) export class WatchCmpt extends Plu

我想完成的是显示数组中的所有元素。该数组包含各种类型的组件(是的,组件),所有这些组件都是从抽象类扩展而来的。这是我的密码:

抽象类插件

export abstract class Plugin {
constructor() { }
}
手表组件

@Component({
selector: 'watch',
template: `
    {{clock | async | date:'medium'}} 
 `
})

export class WatchCmpt extends Plugin {
    clock = Observable.interval(1000).map(() => new Date())
    constructor() {
      super();
    }
}
@Component({
selector: 'demo',
template: `
    <h1>Hello {{name}}</h1>
`
})

export class DemoCmpt extends Plugin {
     name: string = "Jose";
     constructor() {
        super();
     }
}
演示组件

@Component({
selector: 'watch',
template: `
    {{clock | async | date:'medium'}} 
 `
})

export class WatchCmpt extends Plugin {
    clock = Observable.interval(1000).map(() => new Date())
    constructor() {
      super();
    }
}
@Component({
selector: 'demo',
template: `
    <h1>Hello {{name}}</h1>
`
})

export class DemoCmpt extends Plugin {
     name: string = "Jose";
     constructor() {
        super();
     }
}
这是完整的HTML

   div class="col-sm-6">
    <div class="panel panel-info" dnd-sortable-container [sortableData]="targetList">
        <div class="panel-heading">Target List</div>
        <div class="panel-body" dnd-droppable (onDropSuccess)="addTo($event)" [dropZones]="['source-dropZone']">
            <ul class="list-group">
                <li *ngFor="let target of targetList; let x = index" class="list-group-item" dnd-sortable [sortableIndex]="x" [dragEnabled]="true">
                    {{target}}
                </li>
            </ul>
        </div>
    </div>
</div>
div class=“col-sm-6”>
目标清单
    {{target}}

您应该在路由器出口中使用

路由器出口用于将组件输出死记硬背到主容器

您可以使用outlet作为添加到模板超类的标记

<router-outlet></router-outlet>

如果你曾经读过一篇关于一家公司的文章,它会告诉你

当用户执行应用程序任务时,角度路由器可以从一个视图导航到下一个视图


设计组件的问题是面向对象的,没有通用的覆盖接口。因此,编码执行起来有点困难,尤其是卡布局将一个组件与另一个组件碰撞。

您应该在路由器插座中使用

路由器出口用于将组件输出死记硬背到主容器

您可以使用outlet作为添加到模板超类的标记

<router-outlet></router-outlet>

如果你曾经读过一篇关于一家公司的文章,它会告诉你

当用户执行应用程序任务时,角度路由器可以从一个视图导航到下一个视图


设计组件的问题是面向对象的,没有通用的覆盖接口。因此,编码执行起来有点困难,尤其是在卡片布局中,一个组件与另一个组件发生碰撞。

问题在于,您试图在通用列表中使用具体的元素。泛型列表只能在父抽象类定义的API之后对其元素进行操作

换句话说,您只能假设列表包含类型为
Plugin
的对象。类型插件不是一个组件,所以不能假设子组件是组件。Angular没有很好的方法来扩展组件,所以您制作OO组件的想法是行不通的

例如:


如果我创建了另一个类来扩展
插件
,但不是
@组件
,该怎么办?列表如何呈现非组件?

问题是您试图在通用列表中使用具体元素。泛型列表只能在父抽象类定义的API之后对其元素进行操作

换句话说,您只能假设列表包含类型为
Plugin
的对象。类型插件不是一个组件,所以不能假设子组件是组件。Angular没有很好的方法来扩展组件,所以您制作OO组件的想法是行不通的

例如:


如果我创建了另一个类来扩展
插件
,但不是
@组件
,该怎么办?列表将如何呈现非组件?

我可以使用组件工厂实现所需的功能。我在网站上找到了一篇有趣的文章,它正是我想要的:从一个列表中在一个视图中呈现许多不同的组件,而无需使用ngSwitch或其他更复杂的任务进行硬编码


我感谢所有的回答和评论

我可以使用组件工厂实现我所需要的。我在网站上找到了一篇有趣的文章,它正是我想要的:从一个列表中在一个视图中呈现许多不同的组件,而无需使用ngSwitch或其他更复杂的任务进行硬编码



我感谢所有的回答和评论

哪里是
目标列表
声明?@Aravind我编辑了问题进行澄清哪里是
目标列表
声明?@Aravind我编辑了问题进行澄清这是正确的,我理解,现在我想呈现组件,有什么我可以用来做的吗?你的例子是一组固定的组件。如果真是这样的话,我只需要在模板中硬编码要渲染的组件。当时是这样,但我想创建一个带有拖放组件的仪表板,因此我需要在数组中放置任何类型的组件并渲染它们。我会看看这些指南中的任何一个:或者更简单的。该开关将允许您检测组件类型,并在模板中呈现所需的组件。这是正确的,我知道,现在我想要呈现组件,是否可以使用某些方法来实现这一点?您的示例是一组固定的组件。如果真是这样的话,我只需要在模板中硬编码要渲染的组件。当时是这样,但我想创建一个带有拖放组件的仪表板,因此我需要在数组中放置任何类型的组件并渲染它们。我会看看这些指南中的任何一个:或者更简单的。该开关将允许您检测组件类型并在templateGreat find中呈现所需的组件。我不知道。你能配置组件(传递\@输入值和接收\@输出事件)吗?@JoelJeske现在我正在尝试让它工作,如果我能做到的话,或者如果我找到什么我会让你做的know@JoelJeske我做到了。。。你可以用它完美地找到梅格里特。我不知道。你能配置组件(传递\@输入值和接收\@输出事件)吗?@JoelJeske现在我正在尝试让它工作,如果我能做到的话,或者如果我找到什么我会让你做的know@JoelJeske我做到了。。。你可以使用它,它对我非常有效