小编use*_*528的帖子

从结果创建Observable <T>

我正在尝试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文件中导入该类?

谢谢!

observable rxjs typescript angular

30
推荐指数
2
解决办法
4万
查看次数

在默认项目中找不到cordova集成

按照官方的入门教程,当我尝试使用以下命令在手机中部署应用程序时,出现以下错误:(ionic serve --devapp它在浏览器上有效):

[ERROR] Could not find cordova integration in the default project.
Run Code Online (Sandbox Code Playgroud)

我在Windows和MacOS上都收到此错误。我正在使用Node 6.4.1Ionic CLI 4.10.3

官方教程是否缺少某些内容?

ionic-framework ionic4

26
推荐指数
1
解决办法
2万
查看次数

打字稿中的扩展方法(系统)

在我的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)

prototype typescript typescript1.8 angular

14
推荐指数
2
解决办法
9141
查看次数

Angular2使用条件运算符绑定

我对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)

你知道为什么吗?

非常感谢

typescript angular

10
推荐指数
2
解决办法
2万
查看次数

在Angular反应形式中使用updateOn:'blur'

我只想在用户离开字段(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

10
推荐指数
1
解决办法
7458
查看次数

在CanActivate期间显示加载指示器

在我的Angular应用程序中,我使用一个CanActivate防护来保护某些路由器状态下的访问.

CanActivate警卫进行检查,可以持续3-4秒,这是非常annoyng等待那个时候没有加载指标(即微调).

在CanActivate检查期间是否有"标准"方式显示加载微调器?

非常感谢

angular

6
推荐指数
2
解决办法
2669
查看次数

如何显示浮动操作子菜单?

有没有办法在 Android.Support.Design.Widget.FloatingActionButton 中显示“子菜单”

非常感谢!

android submenu material-design floating-action-button android-design-library

4
推荐指数
1
解决办法
6609
查看次数

连接rxjs Observables

是否可以连接多个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)

有什么东西可以达到我的意愿吗?

谢谢

observable rxjs typescript rxjs5 angular

4
推荐指数
1
解决办法
3083
查看次数

Firestore 每日配额

我使用AngularFirestore开发了一个示例应用程序。我大约两个月前部署了我的应用程序,从那时起一直运行良好。

然而,在上周,我注意到该应用程序在使用几个小时后因“客户端离线”错误而被阻止。我发现使用2个小时后我超出了每日的阅读操作限额。

限制为 0.05百万次操作。但通常我会在一小时内进行 30-40 次操作,并且在最后几天之前我从未出现过错误。

有什么改变吗?

谢谢

firebase angular google-cloud-firestore

4
推荐指数
1
解决办法
1339
查看次数

查询参数无法正常工作

在我的 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)

我遵循了官方文档,但找不到可行的解决方案。

angular2-routing angular

3
推荐指数
1
解决办法
2796
查看次数

服务生命周期(销毁服务)

我的应用程序的架构如下: 在此处输入图片说明

用户登录后,我导航到MainModule(懒惰),在那里注册MainModule组件中使用的服务。 CarService缓存 Web 服务的结果,因此,如果用户注销,我需要销毁此服务。当用户注销时,我导航到LoginModolue

我认为导航到LoginModuleMainModule会被破坏(实际上我在MainModule 中注册它,而不是在 AppModule 中)但我注意到如果我再次登录,旧的缓存仍然存在。这是正常的吗?当我导航到LoginModule时,不应该破坏MainModule 中提供的服务吗?

angular-module angular angular-router

3
推荐指数
1
解决办法
1831
查看次数

未找到类型

我刚刚更新了 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”。

我真的无法弄清楚这有什么问题。

非常感谢

typescript angular-cli angular

1
推荐指数
1
解决办法
4356
查看次数