我正在尝试Angular2.
我注意到http服务使用Observable对象而不是Promise(我不喜欢那个选择.. async/ await正在到达).
在我的服务中,我Plants从webservice 下载了一个列表.单击工厂我使用路由显示详细信息.但是当我回去的时候,再次下载植物(因为再次调用构造函数).
为了避免这种情况,我想做类似的事情:
public getPlants(): Observable<Plants[]>
{
if (this._plants != null)
return Observable.fromResult (this._plants); //This method does not exists
return this._http.get('../../res/heroes.json')...
}
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?如何Observable在ts文件中导入该类?
谢谢!
按照官方的入门教程,当我尝试使用以下命令在手机中部署应用程序时,出现以下错误:(ionic serve --devapp它在浏览器上有效):
[ERROR] Could not find cordova integration in the default project.
Run Code Online (Sandbox Code Playgroud)
我在Windows和MacOS上都收到此错误。我正在使用Node 6.4.1和Ionic CLI 4.10.3
官方教程是否缺少某些内容?
在我的angular2项目中,我正在尝试使用typescript扩展字符串类的原型.这是我的代码:
interface String
{
startsWith(s:string);
contains(s:string);
containsOr(s1:string, s2:string);
}
String.prototype.startsWith = function (s:string):boolean {
return this.indexOf (s) === 0;
}
String.prototype.contains = function (s:string):boolean {
return this.indexOf(s) > 1;
}
String.prototype.containsOr = function (s1:string, s2:string):boolean {
return this.indexOf(s1) > 1 || this.indexOf (s2) > 1;
}
Run Code Online (Sandbox Code Playgroud)
使用此代码编译项目(也是Visual Studio Code的内容辅助协助我),但在运行时我得到'包含未定义'.
我做错了什么?
非常感谢
PS:这是我的tsconfig:
{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"outDir": "wwwroot/app/source/"
},
"exclude": [
"node_modules",
"bower_components", …Run Code Online (Sandbox Code Playgroud) 我对angular2中的绑定有疑问.
我写了一个简单的组件,这是代码:
@Component({
selector: 'drawer-item',
templateUrl: '../res/views/drawer-item.html'
})
export class DrawerItemComponent
{
@Input() text:string;
@Input() icon:string;
@Input() textClass:string;
}
<div class="drawer-item-text word-wrap {{textClass}}"> {{text}}</div>
<i class="mdi mdi-{{icon}} drawer-item-img"></i>
Run Code Online (Sandbox Code Playgroud)
我这样使用它:
<drawer-item (click)="selectCompany()" [text]="selectedCompanyLabel" [icon]="selectedCompanyIcon" [textClass]="selectedCompanyClass"></drawer-item>
Run Code Online (Sandbox Code Playgroud)
如您所见,我将文本与变量绑定,例如与selectedCompanyLabel绑定.这样一切都很好,如果selectedCompanyLabel也改变了标签的变化.
我会避免使用类似的变量:
[text]="company ? 'company.name' : 'Select a company'"
Run Code Online (Sandbox Code Playgroud)
但是这样的内容没有绑定.因此,如果公司发生变化,标签不会更新.
但如果我以一种风格使用该策略,它就有效!例如,类似的东西很棒:
<div class="company ? 'italic' : 'bold'"> ... </div>
Run Code Online (Sandbox Code Playgroud)
你知道为什么吗?
非常感谢
我只想在用户离开字段(onblur)时才开始验证表单的字段。
我正在尝试以这种方式:
this.profileForm = this.fb.group({
firstName: ['initial value',
[Validators.required, Validators.minLength(2), forbiddenNameValidator(/bob/i)],
[forbiddenNameValidatorAsync()],
{ updateOn: 'blur' }
],
lastName: ['b']
});
Run Code Online (Sandbox Code Playgroud)
但是这种方式是行不通的。验证(同步和异步)在onChange期间执行。
我也想问一下如何通过对进行检查来验证名称lastName。
示例:如果名称字段与姓氏相同(仅名称字段,而不是整个表单,而不是两个字段),则希望禁用该名称字段。
在我的Angular应用程序中,我使用一个CanActivate防护来保护某些路由器状态下的访问.
该CanActivate警卫进行检查,可以持续3-4秒,这是非常annoyng等待那个时候没有加载指标(即微调).
在CanActivate检查期间是否有"标准"方式显示加载微调器?
非常感谢
有没有办法在 Android.Support.Design.Widget.FloatingActionButton 中显示“子菜单”?
非常感谢!
android submenu material-design floating-action-button android-design-library
是否可以连接多个observable?
例如:我有3个功能:
ensureUserLogged():Observable<boolean>
createEntity():Observable<Entity>
checkEntity():Observable<boolean>
Run Code Online (Sandbox Code Playgroud)
我想做的事情如下:
Observable.combine (ensureUserLogged(), createEntity(), checkEntity()).subscribe (
checkEntityResult => console.log (checkEntityResult),
error => console.log (error)
);
Run Code Online (Sandbox Code Playgroud)
或类似的东西:
ensureUserLogged().then (logged => createEntity()).then (newEntity => checkEntity ())...
Run Code Online (Sandbox Code Playgroud)
否则我需要写一个丑陋的金字塔:
ensureUserLogged().subscribe (
res => {
createEntity ().subscribe (
res => {
checkEntity ().subscribe (
res => { console.log ("I'm finally here") },
error {}
)
},
err => {
}
);
},
err => {
}
)
Run Code Online (Sandbox Code Playgroud)
有什么东西可以达到我的意愿吗?
谢谢
我使用Angular和Firestore开发了一个示例应用程序。我大约两个月前部署了我的应用程序,从那时起一直运行良好。
然而,在上周,我注意到该应用程序在使用几个小时后因“客户端离线”错误而被阻止。我发现使用2个小时后我超出了每日的阅读操作限额。
限制为 0.05百万次操作。但通常我会在一小时内进行 30-40 次操作,并且在最后几天之前我从未出现过错误。
有什么改变吗?
谢谢
在我的 Angular2 应用程序中,我需要将一些可选参数传递给路由。因为它们是可选的,所以我决定使用queryParams.
我使用以下代码来传递参数:
public recoverPassword() {
this.router.navigate(
['/access/recover-password',
{ queryParams: { 'email': this.model.email }} ]
);
}
Run Code Online (Sandbox Code Playgroud)
我得到这个网址:
http://localhost:4200/access/recover-password;queryParams=%5Bobject%20Object%5D
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,该参数完全错误。我无法解析它的目标组件。正确的网址应该是:
http://localhost:4200/access/recover-password;email=myemail@gg.com
Run Code Online (Sandbox Code Playgroud)
我遵循了官方文档,但找不到可行的解决方案。
用户登录后,我导航到MainModule(懒惰),在那里注册MainModule组件中使用的服务。 CarService缓存 Web 服务的结果,因此,如果用户注销,我需要销毁此服务。当用户注销时,我导航到LoginModolue。
我认为导航到LoginModule,MainModule会被破坏(实际上我在MainModule 中注册它,而不是在 AppModule 中)但我注意到如果我再次登录,旧的缓存仍然存在。这是正常的吗?当我导航到LoginModule时,不应该破坏MainModule 中提供的服务吗?
我刚刚更新了 angular-cli (v1.1) 并使用ng new MyProj. 然后我在project.json文件中添加并安装了两个依赖项:
"dependencies": {
...
"toastr": "2.1.2",
"spin": "0.0.1"
},
"devDependencies": {
...
"@types/toastr": "2.1.32",
"@types/spin": "2.3.30",
...
"typescript": "~2.3.3"
}
Run Code Online (Sandbox Code Playgroud)
然后我更新了自动生成的 app.component.ts 添加这个构造函数:
constructor() {
toastr.success('Hi')
}
Run Code Online (Sandbox Code Playgroud)
IDE(视觉工作室代码)不返回任何错误,但是当我使用应用程序提供服务时,ng serve出现以下错误:
../A/src/app/app.component.ts (15,5) 中的错误:C 找不到名称“toastr”。
我真的无法弄清楚这有什么问题。
非常感谢
angular ×10
typescript ×5
observable ×2
rxjs ×2
android ×1
angular-cli ×1
firebase ×1
ionic4 ×1
prototype ×1
rxjs5 ×1
submenu ×1