我遇到了一个问题,如果我动态加载一个组件,模板中没有任何绑定对我有效.除此之外,该ngOnInit方法永远不会被触发.
loadView() {
this._dcl.loadAsRoot(Injected, null, this._injector).then(component => {
console.info('Component loaded');
})
}
Run Code Online (Sandbox Code Playgroud)
动态加载的组件
import {Component, ElementRef, OnInit} from 'angular2/core'
declare var $:any
@Component({
selector: 'tester',
template: `
<h1>Dynamically loaded component</h1>
<span>{{title}}</span>
`
})
export class Injected implements OnInit {
public title:string = "Some text"
constructor(){}
ngOnInit() {
console.info('Injected onInit');
}
}
Run Code Online (Sandbox Code Playgroud)
这是我第一次使用动态加载的组件,所以我认为可能会尝试错误地实现它.
这是一个证明这个问题的傻瓜.任何帮助,将不胜感激.
我正在尝试了解Core Data,并且正在关注Apple的"Locations"教程.我遇到的一个直接绊脚石是我已经开始构建我想要使用Core Data的应用程序.它是单一视图应用程序.
为了在此应用程序中使用Core Data,我需要采取哪些步骤?教程说在创建项目时选择"使用核心数据进行存储"复选框,但必须有一种方法可以在项目创建后启用核心数据.
我真的很感激一些帮助.谢谢.
我想改变UILabel我的应用程序的每个视图中的每个视图的字体而不编码每一个(大约50).我该怎么做呢?
具体来说,我想知道如何引用所有UILabels.
谢谢
我想点击一个按钮全屏播放youtube视频.我目前有以下内容iframe:
<div class="youtube-trailer">
<iframe class="youtube-player" type="text/html" src="http://www.youtube.com/embed/whatever" allowfullscreen frameborder="0"></iframe>
</div>
Run Code Online (Sandbox Code Playgroud)
在Safari Mobile上,特别是当按下"播放"按钮时,视频将以全屏模式启动,这是所需的行为.这可以.我不希望iframe页面上显示.我只想要一个按钮,使用原生视频播放器全屏打开视频.即我不想创建一个过于精细的灯箱来容纳视频.
有人有主意吗?
我是Angular 2框架的新手.我感谢任何帮助.
我在角2中有通常的组件:
import {FORM_DIRECTIVES, FormBuilder, Validators} from 'angular2/common';
export class TestComponent {
public values = ['value1', 'value2', 'value3', 'value4'];
}
Run Code Online (Sandbox Code Playgroud)
然后我注入FormBuilder构造函数:
@Inject(FormBuilder) public fb
Run Code Online (Sandbox Code Playgroud)
HTML包含下一个标记:
<input [(ngModel)]="formData.title" type="text" class="form-control" ngControl="title">
Run Code Online (Sandbox Code Playgroud)
标题和描述非常有用.但我添加了bootstrap下拉列表,它没有任何表单元素.
<div *ngFor="#value of values" (click)="onValueChanged(value)" class="dropdown-item">{{value}}</div>
Run Code Online (Sandbox Code Playgroud)
所以,问题是html标记不包含任何模型.我试图解决这个问题的方法是创建函数onValueChanged
onValueChanged(value){
this.formData.controls.value.updateValue(value);
this.formData.value = value;
console.log(this.formData.pristine) //Still true :(
}
Run Code Online (Sandbox Code Playgroud)
这两行都不起作用,因为this.formData.pristine下拉列表更改后没有更改.
现在我正在考虑如何更新FormBuilder,例如,有一些方法可以this.fb.update()
我不知道是否有一种方式来获得该URL 将被角的路由器调用时产生的navigate方法.
例如:
this._router.navigate(['browse'], { queryParams: { section: 'users', isActive: true } });
可能会导致导航 /browse#?section=users&isActive=true
如何在不执行导航或更新浏览器中的URL的情况下获取此路线?
我在尝试(click)在Angular 2中的事件回调函数内执行某些逻辑时遇到了很大麻烦,而没有触发变化检测.
为什么我不想触发变化检测
回调函数执行简单的动画滚动到顶部.它不会影响其他任何组件,因此我不需要在每个组件中进行变化检测,实际上我真的不希望它开火!由于变化检测在每个组件中都会触发,因此动画在移动设备上的性能极差.
我试过的
我知道我可以使用区域外的代码运行
this._zone.runOutsideAngular(() => {
someFunction();
})
Run Code Online (Sandbox Code Playgroud)
这很好地工作,当你想向区外运行的代码不是由调用click,keyup,keydown事件等.
因为我的组件看起来像......
<button (click)="doThing()">Do that thing outside the zone!</button>
doThing() {
this._zone.runOutsideAngular(() => {
myFunction();
})
}
Run Code Online (Sandbox Code Playgroud)
... myFunction将在区域外运行,但click事件将触发变化检测.
我已经OnPush在尽可能多的组件中实现了变更检测策略.
重要的是,此处不会触发更改检测,但我找不到阻止它的方法.
编辑
请参见此plnk,并OnPush在所有组件中设置更改检测.单击子行组件按钮会在子行,行和应用程序组件中触发CD.
我注意到从 d3 版本 4 更新到版本 5 时行为发生了变化。在 v4 中,当数据集包含 y 轴的所有零值时,“0”刻度线会正确对齐到图表底部。
<head>
<!-- load the d3.js library -->
<script src="https://d3js.org/d3.v4.min.js"></script>
<style>
.line {
fill: none;
stroke: steelblue;
stroke-width: 2px;
}
</style>
</head>
<script>
var margin = {
top: 50,
right: 50,
bottom: 50,
left: 50
},
width = window.innerWidth - margin.left - margin.right,
height = window.innerHeight - margin.top - margin.bottom;
var n = 21;
// An array of objects of length N. Each object has key -> value pair, …Run Code Online (Sandbox Code Playgroud)我正在尝试根据用户的选择更改视图控制器UIAlertView.我是客观的新手,遇到了麻烦.
当用户按下"我已完成"时,我希望应用程序导航回上一个视图控制器.当用户按下"记分板"时,我希望应用程序导航到下一个视图控制器.
UIAlertView *jigsawCompleteAlert = [[UIAlertView alloc] //show alert box with option to play or exit
initWithTitle: @"Congratulations!"
message:completedMessage
delegate:self
cancelButtonTitle:@"I'm done"
otherButtonTitles:@"Play again", @"Scoreboard",nil];
[jigsawCompleteAlert show];
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (buttonIndex == 0) {
NSLog(@"Cancel Tapped.");
[self.navigationController popViewControllerAnimated:YES];
}
else if (buttonIndex == 1) {
NSLog(@"GO tapped.");
startDate = [NSDate date];
// Create the stop watch timer that fires every 10 ms
stopWatchTimer = [NSTimer
scheduledTimerWithTimeInterval:1.0/10.0
target:self
selector:@selector(updateTimer)
userInfo:nil
repeats:YES];
} else if (buttonIndex == …Run Code Online (Sandbox Code Playgroud) 我想知道如果只将@ 2x图像复制到资源上会在非视网膜显示设备上发生什么?它会将视网膜显示图像缩小0.5,以适应UIImageView?
我希望这不是一个愚蠢的问题!
angular ×4
ios ×4
iphone ×4
javascript ×3
objective-c ×3
core-data ×1
d3.js ×1
html5 ×1
ipad ×1
jquery ×1
typescript ×1
uialertview ×1
youtube ×1
zonejs ×1