在Angular 2.0.0中,我正在测试使用Router的组件.但是我得到'提供的参数与呼叫目标的任何签名都不匹配'.错误.在spec.ts中的Visual Studio代码中,新的Router()以红色突出显示
如果有人能让我知道正确的语法是什么,我真的很感激?提前致谢.我的代码如下:
spec.ts
import { TestBed, async } from '@angular/core/testing';
import { NavToolComponent } from './nav-tool.component';
import { ComponentComm } from '../../shared/component-comm.service';
import { Router } from '@angular/router';
describe('Component: NavTool', () => {
it('should create an instance', () => {
let component = new NavToolComponent( new ComponentComm(), new Router());
expect(component).toBeTruthy();
});
});
Run Code Online (Sandbox Code Playgroud)
组件构造函数
constructor(private componentComm: ComponentComm, private router: Router) {}
Run Code Online (Sandbox Code Playgroud) 我刚刚设置了我的第一个离子2应用程序(我已经相当广泛地使用了离子1).我正在尝试使用离子原生相机预览插件.
设置很简单:
npm install -g ionic cordova
ionic start timesnap --v2
ionic platform add android
ionic platform add ios
ionic plugin add cordova-plugin-camera-preview --save
Run Code Online (Sandbox Code Playgroud)
然后我将示例代码复制并粘贴到about页面中:
import { CameraPreview, CameraPreviewRect } from 'ionic-native';
// camera options (Size and location)
let cameraRect: CameraPreviewRect = {
x: 100,
y: 100,
width: 200,
height: 200
};
// start camera
CameraPreview.startCamera(
cameraRect, // position and size of preview
'front', // default camera
true, // tap to take picture
false, // disable drag
true, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在解析器中引发自定义错误,这些错误是我使用全局错误处理程序捕获的。我可以在组件中抛出错误,并且可以很好地解决问题,但是当我在解析器中抛出错误时,它们的类型将更改为标准Error
类型。
这是一个正常运行的复制品:https : //stackblitz.com/edit/angular-gitter-vvgys6
设定
class DisplayableError extends Error {
// ...
}
@Injectable()
export class GlobalErrorHandlerService {
constructor() { }
handleError(error) {
console.log('GOT ERROR instance of DisplayableError', error instanceof DisplayableError);
}
}
Run Code Online (Sandbox Code Playgroud)
工作用法
在任何组件中,我都可以抛出一个错误,并且该错误被捕获在全局错误处理程序中,并且是的一个实例DisplayableError
。
throw new DisplayableError('blah');
Run Code Online (Sandbox Code Playgroud)
用法破损
当我在解析器中抛出错误时,实例类型将更改为Error
并instanceof DisplayableError
返回false。
@Injectable()
export class StoreGetResolver implements Resolve<StoreModel> {
constructor(
private storeService: StoreService,
) { }
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<StoreModel> {
let storeId = route.paramMap.get('storeId');
return this.storeService.get(storeId)
.catch(error => Observable.throw(new DisplayableError('my …
Run Code Online (Sandbox Code Playgroud) 我不确定这是设备问题还是我的代码问题,但我使用相对布局和图像视图创建了一个简单的可拖动可排序列表.我有非常具体的理由这样做,这不是我的问题.
我遇到的问题偶尔会完全冻结我的应用程序.该项目将陷入拖动状态.如果我抬起手指,阴影(拖动)对象仍然在屏幕上,如果我触摸屏幕,它将移动到那个位置.这将持续大约一分钟,然后我会收到一个错误,说应用程序没有响应,可以选择杀死它或等待.logcat中唯一有用的位如下:
12-09 14:23:13.157: W/WindowManager(16415): Drag is in progress but there is no drag window handle.
Run Code Online (Sandbox Code Playgroud)
然后,当应用程序超时时,我将此视为错误
12-09 14:59:09.782: E/ActivityManager(16415): ANR in com.appname.appname (com.appname.appname/.MainActivity)
12-09 14:59:09.782: E/ActivityManager(16415): Reason: keyDispatchingTimedOut
Run Code Online (Sandbox Code Playgroud)
我搜索了这个错误消息,唯一的信息是没有拖拽监听器的人和另一个人说这是设备触摸传感器无法跟上.
理想情况下,我喜欢修复此错误并防止它首先发生.如果我快速拖动它似乎确实发生了,但我不能很好地要求我的用户不要快速拖动......对吧?
或者,是否有一种方法可以检测到拖动已冻结应用程序并中断拖动.就像在触摸监听器上设置一个计时器一样,如果在一两秒内没有drag_location消息中断拖动?计时器的东西,我知道该怎么做,但我不知道如何阻止阻力在它被冻结时停止.有任何想法吗?
这是代码:
建立
//happens once when the app loads
RelativeLayout trackList = (RelativeLayout) findViewById(R.id.nsTrackList1);
trackList.setOnDragListener(new MyTrackDragListener(this));
//happens in a loop for each "track" (image view)
trackButton = new ImageView(this);
trackButton.setImageDrawable(nsPackages[trackId].banner[bannerSizeSelector]);
trackButton.setOnTouchListener(new MyTrackTouchListener());
Run Code Online (Sandbox Code Playgroud)
在触摸
public class MyTrackTouchListener implements OnTouchListener {
boolean isDragging=false;
float prevX, prevY;
public boolean onTouch(View view, MotionEvent …
Run Code Online (Sandbox Code Playgroud)