Javascript 在Angular2中创建链接组件
希望在Angular 2中创建包装器组件,类似于和其他工具允许您创建包装器组件的方式。希望能够重复使用该组件,这样我们就不必每次都重复该结构 基本上,我希望能够重用具有这种粗略结构的组件:Javascript 在Angular2中创建链接组件,javascript,angular,Javascript,Angular,希望在Angular 2中创建包装器组件,类似于和其他工具允许您创建包装器组件的方式。希望能够重复使用该组件,这样我们就不必每次都重复该结构 基本上,我希望能够重用具有这种粗略结构的组件: 'use strict'; import { ROUTER_DIRECTIVES, ROUTER_PROVIDERS } from 'angular2/router'; import {Component, Input} from 'angular2/core'; @Component({ select
'use strict';
import { ROUTER_DIRECTIVES, ROUTER_PROVIDERS } from 'angular2/router';
import {Component, Input} from 'angular2/core';
@Component({
selector: 'nav-item',
directives: [ROUTER_DIRECTIVES],
providers: [ROUTER_PROVIDERS],
template: `
<li>
<a routerLink="<SPECIFIED ROUTE>">
<ng-content></ng-content>
</a>
</li>
`,
})
export default class NavLink {
public static $injector: Array<string> = [];
@Input() to: string;
constructor() {}
}
我只是不确定将数据传递到绑定属性的工作方式;我来自React的背景,所以东西是通过props
传递的,你可以检查类型,这几乎就是普通的JavaScript对象传递
访问绑定属性和/或这是我试图实现的反模式的最佳方式是什么?我认为Angular2组件是React组件的更强大版本,您可以用更少的资源做更多的事情。我不确定这是好是坏,但我只知道你可能不需要像在React中那样抽象那么多东西,或者想抽象那么多东西。这是因为有了更多的预构建工具,这可能会再次减少你做某些事情的自由度,并使你更快地做其他事情 我还要说,在React中来回传递值至少对我来说更直观 接下来,我们将介绍正确的语法以及Angular2中路由的工作原理。虽然你可能已经知道了这一点,但我还是要把它贴出来,以防有人读到 您可以从一个@RouteConfig装饰器开始,该装饰器接受一组对象,并使它们可用于您的应用程序。因此,在你的情况下,你会有如下情况:
@RouteConfig([
{path: '/wine', name: 'Wine', component: Wine},
//or just so you can see it in case you haven't how to add params!
{path: '/wine/:type', name: 'WineType', component: WineType}
])
现在要访问routerlink,您需要传递它:
<a [routerLink] = "['/Wine'] </a>
<a [routerLink] = "['/WineType', {type: type.ID}]}> </a>
现在回答你关于来回传递东西的问题
对于您的第一个组件,您应该将以下内容:
<li>
<a routerLink="[to]">
<ng-content></ng-content>
</a>
</li>
因此,您很可能希望将to字符串括在方括号中,以便语法适用于routerLink
对于第二个组件Navbar,语法非常接近,但并不精确
<div class="row">
<ul>
<nav-item [to]="/Wines"></nav-item>
</ul>
</div>
这表示将“/Wines”传递到子组件中的变量[to]。它必须放在方括号内
如果你有一个导航栏项目列表,你可以这样做:
'use strict';
import {Component} from 'angular2/core';
import NavLink from './link.component';
@Component({
selector: 'Navbar',
host: {'class': 'navbar'},
directives: [NavLink],
template: `
<div class="row">
<ul>
<nav-item *ngFor="#item of items [to]=item>
</nav-item>
</ul>
</div>
`,
})
export default class Nav {
all_my_routes: Array<string> = [];
constructor() {
all_my_routes = ['/Wine', '/OtherWine', '/Beer']
}
}
“严格使用”;
从'angular2/core'导入{Component};
从“/link.component”导入导航链接;
@组成部分({
选择器:“导航栏”,
主机:{'class':'navbar'},
指令:[NavLink],
模板:`
<li>
<a routerLink="[to]">
<ng-content></ng-content>
</a>
</li>
<div class="row">
<ul>
<nav-item [to]="/Wines"></nav-item>
</ul>
</div>
'use strict';
import {Component} from 'angular2/core';
import NavLink from './link.component';
@Component({
selector: 'Navbar',
host: {'class': 'navbar'},
directives: [NavLink],
template: `
<div class="row">
<ul>
<nav-item *ngFor="#item of items [to]=item>
</nav-item>
</ul>
</div>
`,
})
export default class Nav {
all_my_routes: Array<string> = [];
constructor() {
all_my_routes = ['/Wine', '/OtherWine', '/Beer']
}
}