我创建了一个node.js应用程序来解析angular2HTML AST和Typescript AST以便提取数据.
要做到这一点,我需要进口@angular/compiler,因此@angular/core,这需要peerDependency的zone.js@^0.6.21.
问题是在加载时node.js应用程序似乎有点破坏了zone.js:
<my-project>/node_modules/zone.js/dist/zone.js:1286
var openNative = patchMethod(window.XMLHttpRequest.prototype, 'open', function () { return function (self, args) {
^
TypeError: Cannot read property 'prototype' of undefined
at patchXHR (<my-project>/node_modules/zone.js/dist/zone.js:1286:55)
at <my-project>/node_modules/zone.js/dist/zone.js:1253:1
at Zone.Zone.zoneSpec._properties (<my-project>/node_modules/zone.js/dist/zone.js:9:68)
at Object.<anonymous> (<my-project>/node_modules/zone.js/dist/zone.js:12:2)
at Module._compile (module.js:541:32)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)
at Module.require (module.js:468:17)
Run Code Online (Sandbox Code Playgroud)
在我升级之前angular2 final,我正在使用angular 2.0.0-rc.1它需要zone.js@ ^0.6.6,它工作正常.
zone.js,但不可能因为它破坏了代码. …我*ngFor在一个 of 对象上使用了一个指令array,这些对象有很多属性。
我希望*ngFor仅当其中三个属性发生更改时才进行更新,但根据TrackByFunction 的文档,没有有效的示例说明如何实现这一点。
我尝试返回一个包含其中属性的对象,但它似乎不起作用,因为当任何其他属性发生更改时,模板仍然会再次呈现。
我已经构建了一个简单的SDN4 + REST API:
一个名为player的端点,它包含一组属性.
每个球员都有一个Set<Player> friends属性.
GET,POST,PUT,DELETE和PATCH就像/ player/{id}上的魅力一样
这里的问题是/ player/{id}/friends.
我不知道如何向玩家添加朋友,这是我到目前为止所尝试的:
curl http://localhost:8080/api/player/1/friends:
{ }
curl -i -X PATCH -H "Content-Type:application/json" -d '{"id":1, "name":"Player2", "password":"", "email":"player2@game.com", "elo":1200}' http://localhost:8080/api/player/1/friends:
HTTP/1.1 204 No Content
Server: Apache-Coyote/1.1
Date: Wed, 04 Nov 2015 13:03:17 GMT
curl http://localhost:8080/api/player/1/friends
{ }
也尝试了PUT,结果相同.
我也尝试过POST,但我得到了一个"不允许的方法".
这是我的存储库:
@RepositoryRestResource(collectionResourceRel="player", path="player")
public interface PlayerRepository extends PagingAndSortingRepository<Player, Long> {
Player findByid(@Param("0") long id);
}
Run Code Online (Sandbox Code Playgroud)
我的模特:
@NodeEntity
public class Player {
@GraphId Long id;
String …Run Code Online (Sandbox Code Playgroud) 我正在测试一个组件,该组件使用基于可观察的服务来获取一些数据并显示它用于i18n目的.
由于特定需要,i18n服务是定制的.
该组件在开发模式下工作(在某些模板中使用,工作正常)但测试失败.
@Component({
selector : "i18n",
template : '<span [innerHTML]="text"></span><span #wrapper hidden="true"><ng-content></ng-content><span>',
encapsulation: ViewEncapsulation.None
})
export class I18nComponent implements OnChanges {
constructor(private i18n:I18n) {
}
@ViewChild('wrapper')
content:ElementRef;
@Input('key')
key:string;
@Input('domain')
domain:string;
@Input('variables')
variables:Variables = [];
@Input("plural")
plural:number;
text:string;
ngOnChanges():any {
this.i18n.get(this.key, this.content.nativeElement.innerHTML, this.variables, this.domain).subscribe((res) => {
this.text = res;
});
}
}
Run Code Online (Sandbox Code Playgroud)
public get(key:string,
defaultValue?:string,
variables:Variables = {},
domain?:string):Observable<string>{
const catalog = {
"StackOverflowDomain":
{
"my-key":"my-value"
}
};
return Observable.of(catalog[domain][key]).delay(300);
}
Run Code Online (Sandbox Code Playgroud)
用Variables:
export …Run Code Online (Sandbox Code Playgroud) 我想编辑about:blank iframe中的内容.我试过了:
document.getElementById('iframe1').contentWindow.document.body.innerHTML="<p>hello</p>";
Run Code Online (Sandbox Code Playgroud)
我得到:
错误:拒绝访问属性"文档"的权限
有人能帮我吗?
是什么原因使用ngSubmit提交表单而不是使用onSubmit角度2中的提交按钮.
我想创建一个通用的api服务,以便更容易创建与模型相关的服务:
export abstract class ModelService<T> {
constructor(protected apiService: ApiService) {
//ApiService is a service that wraps Http and adds signature , auth and serialization.
}
public getAll(): Observable<T[]> {
return this.apiService.get<T[]>(this.modelClass, this.baseUrl);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我将创建管理模型的服务Foo:
@Injectabe()
export class FooService extends ModelService<Foo>{
}
Run Code Online (Sandbox Code Playgroud)
但是当我调用时,fooService.getAll().subscribe(...);我得到一个错误,说明apiService是未定义的(无法获取未定义的属性'get').
所以修复是这样添加一个构造函数FooService:
constructor(api: ApiService) {
super(api);
}
Run Code Online (Sandbox Code Playgroud)
但问题是它不是开发友好的,没有任何东西告诉你这样做,因为FooService扩展ModelService,它应该具有相同的构造函数,因此具有相同的依赖关系.
有没有办法继承依赖?
PS:我已经试图添加@Injectable()到ModelService,同样的错误.
编辑tsconfig.json::
{
"compilerOptions": {
"baseUrl": "",
"declaration": false,
"emitDecoratorMetadata": true, …Run Code Online (Sandbox Code Playgroud) 我有一个代码实现,它遍历 anobject的属性。
for (const prop in obj) {
propsMap[prop] = prop;
}
Run Code Online (Sandbox Code Playgroud)
但正如状态一样,我的 IDE (WebStorm) 建议我添加一个属性检查,obj.hasOwnProperty(prop)以避免迭代不存在的属性:
for (const prop in obj) {
if (obj.hasOwnProperty(prop)) {
propsMap[prop] = prop;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是当前的测试总是伴随着obj.hasOwnProperty(prop)存在true,并且覆盖率不是我能得到的最好的,我不知道如果obj实际上没有属性会发生什么prop。
我需要创建一个包含我的Tomcat8设置和我的Web应用程序之战的简单jar.
为什么?我想创建一个可移植的Web应用程序,这意味着你可以在任何地方,linux,windows,mac等任何地方托管它.唯一需要的是jar文件,所有数据都保存在包含当前jar文件的文件夹中创建的"data"文件夹中.
我们的目标是创建一个jar文件,你必须开始启动tomcat并完成它,你的web应用程序就绪并且正在聆听.
我不知道它是否可能,但我发现没有使用谷歌.
PS:我将使用VAADIN7(用于Web应用程序),Jersey JAX-RS(用于休息api)和Neo4j(用于数据)
我有一个MetaManager类:
@Injectable()
export class MetaManager{
constructor(private handlers:Handler[]){
console.log(handlers);
}
}
Run Code Online (Sandbox Code Playgroud)
这个类需要Handler[]注册为处理程序.当我得到一些元数据时,我在我的处理程序数组中循环以查看哪个可以处理我的元条目.
话虽如此,问题是我无法在main.ts中提供一个类数组作为配置,这是我尝试过的(以及什么不起作用):
使用String条目(@Provide('HANDLERS')在MetaManager中使用注释:
`bootstrap(AppComponent, [MetaManager,provide('HANDLERS', {useValue: [DebugHandler]}) ]);`
Run Code Online (Sandbox Code Playgroud)
使用接口提供处理程序:
export const HANDLERS: HandlerConfig = {handlers: [<Handler>DebugHandler]};
bootstrap(AppComponent, [MetaManager, provide(HandlerConfig, {useValue: HANDLERS}) ]);
Run Code Online (Sandbox Code Playgroud)
使用Handler[]类提供者:
bootstrap(AppComponent, [MetaManager, provide(Handler[], [DebugHandler])]);
Run Code Online (Sandbox Code Playgroud)
我想提供一个类数组,因为MetaManager将来需要有多个Handler,通知,错误等...
编辑:
使用多提供程序给我一个No provider for Array! (ApiService -> MetaManager -> Array)错误:
元manager.ts:
@Injectable()
export class MetaManager{
constructor(private handlers:Handler[]){
console.log(handlers);
}
}
Run Code Online (Sandbox Code Playgroud)
main.ts:
bootstrap(AppComponent,
[ MetaManager,
provide(Handler, {useClass: DebugHandler, multi: true}),
provide(Handler, {useClass: NotificationHandler, …Run Code Online (Sandbox Code Playgroud) angular ×6
jasmine ×2
javascript ×2
typescript ×2
html ×1
jar ×1
java ×1
node.js ×1
tomcat ×1
tomcat8 ×1