这整条新路线的结构听起来很不错,现在我觉得它确实存在.我放弃了尝试使其工作,在这里我注意到甚至Angular 2页面中的主要示例都不起作用.如果您打开实例并且尝试它只是单击它很酷并且您可以看到网址中的路径被更改,但它只是更改字符串路径不存在,如果您复制您的网址并发送它对某人他们会收到以下错误:
{
"statusCode": 404,
"error": "Not Found"
}
Run Code Online (Sandbox Code Playgroud)
即使你只是刷新页面,你也会得到同样的错误.
如果要重现该问题,请打开以下URL:
https://angular.io/resources/live-examples/tutorial/ts/plnkr.html
单击实时预览右上角的"在单独的窗口中启动预览"按钮,等待它加载页面,当您看到URL更改为:
http://run.plnkr.co/KMzM8hkaCyhlnf3b/dashboard
做一个F5刷新页面,你会得到错误.
这是一个错误,它应该工作的方式,或者他们甚至没有尝试过的东西?他们是否已经开始使用糟糕的路由器实现了,或者我只是完全迷失了我是如何让它工作的?请指教 !
我猜我最好使用hashtag实现.
我有一个非常简单的文件:
/// <reference path="../typings/browser/ambient/jquery/jquery" />
import {Component} from "angular2/core";
@Component({})
export class AppComponent{
constructor(){
$.isEmptyObject({});
}
}
Run Code Online (Sandbox Code Playgroud)
我安装了jQuery打字,所以打字稿不会抱怨不能识别$.但现在问题在于抱怨问题中的问题:
Error:(1679, 13) TS2403: Subsequent variable declarations must have the same type. Variable '$' must be of type 'JQueryStatic', but here has type 'cssSelectorHelper'.
Run Code Online (Sandbox Code Playgroud)
出现这个问题是因为角度量角器也声明了$,cssSelectorHelper
而不是JQueryStatic
对象.
事情是......我根本不使用量角器!!!为什么在从angular2/code导入东西时它会被添加?有没有一个像样的解决方案,直到Angular家伙解决这个问题,如果他们做的话.
注意:在量角器文件中注释掉定义并不是一个不错的解决方法,我正在寻找永久性的东西,当别人抓住项目并运行干净安装或更新角度库时,这些东西不会消失.
这是我正在尝试做的一个更简单的例子:
export class Person{
id:Number;
name:String;
}
export class PersonForm{
// This line:
default:Person = {name: "Guy"};
// Gives the following error:
// Error:(25, 5) TS2322: Type '{ name: string; }' is not assignable to type 'Person'.
// Property 'id' is missing in type '{ name: string; }'.
// I tried <Person>{name: "Guy"} but it gives the same error.
}
Run Code Online (Sandbox Code Playgroud)
只要我没有使用不存在的属性,我怎么能让编译器忽略这个问题,或者我如何声明类,这样我就可以用这种方式进行赋值而不是新的Person(),然后只设置我想要的属性.
注意:将具有所有属性的对象发送到构造函数中并不是我期望的解决方案.另外使用接口是有效的,因为我可以声明字段是可选的,我怎么能在类中做同样的事情?
添加更多信息:
我正在努力实现的主要目标:
找到声明类(不是接口)的最佳方法,这样我就可以在一行中使用干净的代码初始化它,只设置我想要设置的参数.在Java中,您将重载构造函数或使用Builder模式.
我当然可以尝试使用构建器模式,但我正在寻找更多的打字方式来实现它,如果有的话.