小编Oma*_*mar的帖子

在 *ngIf 中使用函数运行多次而不是一次

模板

<pre *ngIf="isAdmin()">{{email|json}} - {{user|json}}</pre>
Run Code Online (Sandbox Code Playgroud)

成分

isAdmin() {
    console.log('isAdmin: ', this.bcAuthService.isAdmin());
    return this.bcAuthService.isAdmin();
}
Run Code Online (Sandbox Code Playgroud)

服务

isAdmin() {
    return this.admins.includes(localStorage.getItem("email"));
}
Run Code Online (Sandbox Code Playgroud)

问题

组件中的函数会多次打印。为什么?这是错误的吗?什么是更好的方法?

在此处输入图片说明

angular

3
推荐指数
2
解决办法
3900
查看次数

在同一组件内重复 html

我正在寻找一种在组件中的多个位置重复相同标记的方法。我知道我可以使用一个新组件,但我正在寻找一些不那么严重的东西。

html

        <nav class="pages">
            <ul class="inline">
                <li 
                    *ngFor="let p of pages; let i = index;"
                    [ngClass]="{'active': page.current_page == i+1}"
                    (click)="onPageChange(i+1, $event)"
                >{{i+1}}</li>
            </ul>
        </nav>
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以ng-template在同一组件内的多个位置重复相同的标记...如下所示

<div id="header"> <ng-template [innHTML]="#pages"></ng-template> </div>
<div id="content">...</div>
<div id="footer"> <ng-template [innHTML]="#pages"></ng-template> </div>

<ng-container #pages>
    <ul class="inline">
        <li *ngFor="let p of pages; let i = index;" [ngClass]="{'active': page.current_page == i+1}" (click)="onPageChange(i+1, $event)">{{i+1}}</li>
    </ul>
</ng-container>
Run Code Online (Sandbox Code Playgroud)

ng-template angular

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

firebase 电话身份验证“由于异常活动,我们已阻止来自此设备的所有请求。稍后重试。”

我正在开发和测试一个应用程序。当我期待使用 6 位数笔发送短信时,我收到以下消息。

{code: "auth/too-many-requests", message: "由于异常活动,我们已阻止来自此设备的所有请求。请稍后重试。"}

所以我尝试去authentication=> Sign-in method=>phone并添加 # 进行测试,但出现以下错误

添加测试电话号码时出错

有谁知道如何解决这些问题之一,以便我可以继续测试我的应用程序。

谢谢

firebase firebase-authentication angularfire2

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

Angular 2 +如何使用同一选择器(elementRef.nativeElement)选择和循环多个元素

在我的组件中,我试图取消选择具有相同类名的所有复选框。

querySelector每次(或一次)仅选择第一个...,querySelectorAll并且不选择任何内容。

这就是功能。我知道这样使用jQuery是错误的,但这说明了我的目标。

unsetAllOptions(){
    var self = this;
    var i = 0;
    $("input.option_input").each(function(){
        i++;
        var element = self.elRef.nativeElement.querySelector("input.option_input")[i];
        if(element.checked){
            // console.log(i)
            console.log('unchecking:',i);
            element.checked=false;
            element.dispatchEvent(new Event('change'));
            element = "";
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

javascript angular2-ngmodel angular

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

Javascript removeEventListener OnDestroy 在 Angular 6 中不起作用

我试图removeEventListener在我的角度组件中: Javascript removeEventListener 不工作

    ...
    ngOnInit() {
        document.addEventListener('visibilitychange', () =>this.handleVisibleState(), true);
    }

    ngOnDestroy() {
        document.removeEventListener('visibilitychange', () => this.handleVisibleState(), true);
    }

    handleVisibleState() {
        let vis = document.visibilityState === 'visible';
        this.configsService.update_collab_visible(vis);
    }
    ...
Run Code Online (Sandbox Code Playgroud)

addEventListener即使在上述作品之后ngOnDestroy ()

如何从角度组件中的文档解除可见性状态?

尝试 2

    private visibilityChangeCallback: () => void;

    ngOnInit() {
        this.visibilityChangeCallback = () => this.handleVisibleState();
        document.addEventListener('visibilitychange', this.handleVisibleState, true);
    }

    ngOnDestroy() {
        document.removeEventListener('visibilitychange', this.handleVisibleState, true);
    }

    handleVisibleState() {
        let vis = document.visibilityState === 'visible';
        console.log(typeof this.configsService); // undefined
        this.configsService.update_collab_visible(vis);
    }
Run Code Online (Sandbox Code Playgroud)

结果:

错误类型错误:无法读取未定义的属性“update_collab_visible”

typescript angular-routing angular

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

BigCommerce StoreFront API SSO - 登录无效。请尝试重新登录

在这呆了几天。我正在我的 angular/nodejs 应用程序上制作一个登录表单。bc-api 能够验证用户/密码。现在,我需要允许客户使用 sso 进入商店,但生成的 jwt 不起作用。我在下面的尝试......我正在寻找故障排除技巧。

生成 JWT/sso_url

var jwt = require('jwt-simple');

function decode_utf8(s) {
  return decodeURIComponent(escape(s));
}

function get_token(req, data) {
    let uid = req.id;
    let time = Math.round((new Date()).getTime() / 1000);
    let  payload = {
        "iss": app.clientId,
        // "iat": Math.floor(new Date() / 1000),
        "iat": time,
        "jti": uid+"-"+time,
        "operation": "customer_login",
        "store_hash": app.storeHash,
        "customer_id": uid,
        "redirect_to": app.entry_url
    }
    let token = jwt.encode(payload, app.secret, 'HS512');
    token = decode_utf8(token);
    let sso_url = {sso_url: `${app.entry_url}/login/token/${token}`}
    return sso_url
}
Run Code Online (Sandbox Code Playgroud)

payload 决心

{ …
Run Code Online (Sandbox Code Playgroud)

bigcommerce

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

angular 6:在同一个组件中使用相同的 html 标记两次

请参阅下面的示例代码...我想在我的角度组件的 2 个地方使用相同的标记。我怎样才能做到这一点?

我知道我可以注册一个新组件,但这听起来有点过头了。

<div class="mobile-aside" *ngIf="isMobile"><!-- aside template here --></div>
<div class="desktop-aside" *ngIf="!isMobile"><!-- aside template here --></div>

<ng-template #aside>
  <category-aside
    [categoryData]="categoryData"
    [currentParams]="queryParams"
    (filter)="onFilter($event)"
    (changepage)="onPage($event)"
    (sort)="onSort($event)"
    (sortdir)="sortDir($event)"
    (search)="onSearch($event)"
  ></category-aside>
</ng-template>
Run Code Online (Sandbox Code Playgroud)

angular

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

nx lib 负责环境文件替换不起作用

  • 我有这个库,@my-proj/commonexport * from './lib/environment';index.ts
  • 我的前端(ng)和后端(express // Nest)应用程序import { environment } from '@my-proj/common'
  • 当我构建这些应用程序时,仅使用开发变量。IE npx nx build angular-app --prod;
  • 我想既然我是用 prod 标志构建的,那么它会使用environment.prod.ts from @my-proj/common?

项目配置:

"common": {
  "root": "libs/common",
  "sourceRoot": "libs/common/src",
  "projectType": "library",
  "architect": {
    "build": {
      "builder": "@nrwl/node:package",
      "outputs": ["{options.outputPath}"],
      "configurations": {
        "production": {
          "fileReplacements": [
            {
              "replace": "libs/common/src/lib/environment.ts",
              "with": "libs/common/src/lib/environment.prod.ts"
            }
          ]
        }
      },
      "options": {
        "outputPath": "dist/libs/common",
        "tsConfig": "libs/common/tsconfig.lib.json",
        "packageJson": "libs/common/package.json",
        "main": "libs/common/src/index.ts",
        "assets": ["libs/common/*.md"]
      }
    }
  }, …
Run Code Online (Sandbox Code Playgroud)

angular nrwl nrwl-nx

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

Angular RXJS无需订阅即可获取数据

我在服务中具有此功能,可从我的API获取数据

getProductById(id) {
    return this.http.get<any>(piUrl + '/id', { params: id }).catch(this.errHandler);
}
Run Code Online (Sandbox Code Playgroud)

我知道如何在组件中获取数据的唯一方法就是这样订阅。

this.myService.getProductById(id).subscribe(product => this.product = product);
Run Code Online (Sandbox Code Playgroud)

但是一旦没有流,我就只需要数据。我如何一次获取数据?这样的事情。

this.myService.getProductById(id).once(product => this.product = product);
Run Code Online (Sandbox Code Playgroud)

rxjs angular

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

Promise.all([ anotherPromise, anotherPromise ]) 当嵌套 promise 时父级没有阻塞

在以下示例中,get_bc_templates()返回 before get_bc_template()

async get_bc_templates(mfpns, cnetDB, cb) {
    const templates = await Promise.all([mfpns.map(async item => await this.get_bc_template(item, cnetDB))]);
    if (cb) {
        console.log(`prints immediately. before get_bc_template`.green.bold, templates)
        return cb(200, templates.map(template => template.bigCommerce_object))
    }
}




async get_bc_template(mfpn, cnetDB, cb ?) {
    console.log('this logs after the get_bc_templates already returns', mfpn);
    let collective_product = {
        CNET_data: promised_data[1],
        JAX_data: JAX_data,
        suggested_retail: await this.calc_suggested_retail(JAX_data),
        }
    return collective_product;
}


Run Code Online (Sandbox Code Playgroud)

我需要帮助重写它,因此get_bc_templates返回一个数组get_bc_template() => collective_product(get_bc_template() 一次很好用)。

javascript node.js typescript

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