小编Tam*_*gár的帖子

如何处理Angular中的深层链接?

对此有很多疑问.我已经浏览了好几天了.我尝试了一切,但都没有奏效.是的,我也检查了angular.io,但这也没有用.所以,请问,有人可以提出最终答案,或者指出一个我可能还没有看到过的答案吗?

这是一个URL,一个指向Angular应用程序的深层链接whatever及其someroute带参数的路径.

http://somedomain.com/whatever/someroute/123456
Run Code Online (Sandbox Code Playgroud)

当然它会导致404错误.必须配置Web服务器.我的服务器运行nginx,我做了这个:

location / {
     try_files $uri $uri/ /whatever/index.html;
}
Run Code Online (Sandbox Code Playgroud)

现在它将此服务器上每个站点的404错误重定向到我的Angular应用程序,但这是次要问题.问题是路由仍然不想启动./每次调用默认路由,而不是/someroute/123456.

而不是指向我可能已经看过并尝试过的各种教程,有人可以简单地解释一下我错过了什么微不足道的观点吗?

angular

17
推荐指数
3
解决办法
5686
查看次数

如果@Input 正在接收对象,则 ngOnChanges 不会触发

父组件模板:

<my-component [param]="whatever"></my-component>
Run Code Online (Sandbox Code Playgroud)

父组件代码:

whatever = { value1: 0, value2: 1, value3: 'foo' };
Run Code Online (Sandbox Code Playgroud)

子组件代码:

@Input() public param: any;

ngOnChanges() {
  console.log('Received input: ', param);
}
Run Code Online (Sandbox Code Playgroud)

这不起作用。whatever子组件ngOnChanges不会注意到对 的任何更改,也不会触发。

如果我尝试使用 setter,它也不起作用:

@Input() set param(value) {
  console.log(value);
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试在父组件中运行手动区域更新,它也无济于事。

显然@Input()只能检测对象的结构何时发生变化,而不能检测其值。

那么如何将对象作为@Input()属性传递并让子组件检测值的变化呢?

angular2-template angular angular6

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

我应该为Firebase Cloud Messaging中的授权密钥指定什么

你能帮助我(以及其他像我一样沮丧的人)来了解Google Firebase的工作方式吗?文件太混乱了,这让我觉得自己是一个白痴.

这就是事情.我只是尝试向我的Cordova应用程序的用户发送推送消息,注意到他们有关更新或其他内容.在过去的好时光(可能是几个星期前),它简称为推送消息.现在有这个Firebase的东西,他们改变并重命名了一切.我想我需要的是目前称为Notifications,但还有Cloud Messaging,我真的没有看到确切的区别.

然后完全混淆了术语.显然有一个https API来发送通知,但它的记录很少.有几个网站在解释它,但它们似乎没有就术语达成共识.有些人提到"API密钥",其他人称为"身份验证密钥",Google本身称之为"授权密钥",但当我在控制台上查看我的项目设置时,我看到"服务器密钥"和"应用程序ID" google_services.json文件包含"private_key_id".因此有大量的WTF.

有人可以澄清我应该在这里提供什么?这就是应该如何为Firebase API制定POST请求:

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA  <-- WHAT IS THIS?

{ "data": {
    "score": "5x1",
    "time": "15:10"
 },
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..." <-- AND THIS?
}
Run Code Online (Sandbox Code Playgroud)

什么是"授权"?如果我想将通知发送给所有用户,那么"to"值会变成什么,如果我想定位特定组,该怎么办?(对于初学者,如果它只是到达每个设备,我会很高兴.)这些参数是否有良好的文档?

此外,Google似乎假设每个人都使用Java工作并仅提供Java示例.至少我没有发现任何可用于PHP,Node.js或纯JavaScript的东西.我不需要的所有功能都有很多例子.

更新:我刚刚发现"授权"应该是我项目的云消息传递选项卡下Firebase控制台上的"服务器密钥".(好东西他们没有太多地隐藏它.)但是,如果我用cURL从PHP发送一个POST,它会返回一个HTTP代码为0的空响应.

https cordova firebase firebase-cloud-messaging firebase-notifications

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

防病毒软件阻止的服务器端事件

我正在用 JavaScript 实现服务器端事件客户端,使用EventSource. 后端发送的消息从未到达前端,直到我意识到我的防病毒软件阻止了它们。一旦我关闭它,事件就开始按预期工作并且消息到达。

当然,我可以在自己的计算机上禁用这个令人讨厌的错误软件,但我不能要求我的用户这样做。此外,似乎 Windows 安全中心EventSource也在阻止流量。

EventSource虽然很多网站都在使用,但它们似乎没有被阻止。有什么秘密?

我正在尝试做的是向前端提供有关在服务器上运行的长时间转换过程的反馈。如果您有比 更好的主意EventSource,请告诉。

更新:这是 SSE 的一个工作示例:https : //www.w3schools.com/html/tryit.asp? filename =tryhtml5_sse

这适用于我的浏览器。但是如果我用我自己的 API 替换事件源,它会再次失败。

javascript antivirus

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

Postgres COUNT FILTER 语法错误 - 为什么?

有人能找到我为什么这个查询会产生语法错误吗?这是一个简单的广告数据库,其中包含类别和广告。查询得到一个广告类别列表,加上它有多少个广告和多少个活动广告,后者意味着不超过 2 周的广告。PostgreSQL 说:

"(" 行 5: FILTER(WHERE ads..^) 处或附近的语法错误

另一个 COUNT 工作得很好。我不明白 FILTER 子句有什么问题。谢谢!

    $data = pg_query($dbconn, 'SELECT categories.id,
                                  categories.name,
                                  COUNT(ads.id) AS ads_count,
                                  COUNT(ads.id) 
                                      FILTER (WHERE ads.date > '.strtotime('-2 weeks').') 
                                      AS ads_active_count
                           FROM erpatak.ads_categories AS categories
                           LEFT JOIN erpatak.ads AS ads ON ads.category = categories.id'
                           .$filter.'
                           GROUP BY categories.id, categories.name
                           ORDER BY name 
                           OFFSET '.$offset.' 
                           LIMIT '.$maxcount);
Run Code Online (Sandbox Code Playgroud)

postgresql count postgresql-9.1

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

MongoDB:如何在数组中查找字段?

我正在尝试为文档中的嵌入式数组检索一些查找数据。以下是数据示例:

[
   {
      "_id": "58a4fa0e24180825b05e14e9",
      "user_id": "589cf6511b94281f34617a13",
      "user": {
         "firstname": "John",
         "lastname": "Doe"
      },
      "stages": [
         {
            "user_id": "589cf6511b94281f34617a13"
         },
         {
            "user_id": "589cf6511b94281f346343c3"
         }
      ],
   }
]
Run Code Online (Sandbox Code Playgroud)

如您所见,stages是一个数组,user_id仅包含字段。它们指向_id另一个名为 的集合中的字段users

这是我得到上述结果的方式:

db.collection('things').aggregate([{
        $match: finder
    },
    {
        $lookup: {
            from: 'users',
            localField: 'user_id',
            foreignField: '_id',
            as: 'user'
        }
    },
    {
        $unwind: '$user'
    }
]);
Run Code Online (Sandbox Code Playgroud)

现在,这非常简单:选择记录,user字段使用$lookup. 但是我怎么能对 的元素做同样的事情stages呢?想要的结果是这样的:

[
   {
      "_id": "58a4fa0e24180825b05e14e9",
      "user_id": "589cf6511b94281f34617a13",
      "user": {
         "firstname": "John",
         "lastname": …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

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

Electron - 从渲染器打开本机对话框窗口

我正在尝试在 Electron 中打开一个简单的文件浏览器窗口。该片段直接来自文档:

const { dialog } = require('electron')
console.log(dialog.showOpenDialog({ properties: ['openFile', 'multiSelections'] }))
Run Code Online (Sandbox Code Playgroud)

不起作用,并导致:

Uncaught TypeError: Cannot read properties of undefined (reading 'showOpenDialog')

我知道有多个关于此问题的线程,但那里建议的解决方案似乎都不起作用。添加enableRemoteModule: trueBrowserWindow定义中当然不会。.remote如果我添加或.remote.dialog到该行似乎也并不重要require()

javascript electron

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

Angular 绑定中的 Unicode 字符

关于如何在 Angular 绑定中显示 Unicode 字符代码有一些答案,但我正在尝试动态显示一个,但一切似乎都失败了。

我有一个接收字符代码作为@Input参数的组件。

<my-component [icon]="e901"></my-component>
Run Code Online (Sandbox Code Playgroud)

然后组件尝试显示它,但这些都不起作用:

<i>{{ "\u" + icon  }}</i>
<i [innerHTML]="'\u' + icon"</i>
<i [innerHTML]="`\u${icon}`"</i>
<i [innerHTML]="'&#' + icon + ';'"</i>
Run Code Online (Sandbox Code Playgroud)

语法有很大的发挥空间,但它总是会导致错误或只是简单地显示\ue901为字符串。如果我对代码进行硬编码,它确实有效:

<i>{{ "\ue901" }}</i>
Run Code Online (Sandbox Code Playgroud)

我在模板或 TypeScript 中生成字符串都没有关系。如果我尝试将整个代码作为参数传递,则它不起作用。有什么想法吗,伙计们?

javascript unicode typescript angular

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

如何构建返回Observable的服务?

我正在构建一个查询Google Maps Places Autocomplete API并返回对象数组的服务。服务本身非常简单。我正在使用Maps JS API。字符串将传递给服务,并返回匹配项列表。

问题是如何使该服务输出成为Angular Observable?

这是我现在的位置:

import {Injectable, OnInit} from '@angular/core';
import {Observable} from 'rxjs/Rx';
declare var google: any;

@Injectable()
export class GoogleMapsService {

    getAutocomplete(input = {'input': '', 'types': [] } ) {
        var autocomplete = new google.maps.places.AutocompleteService();
        return autocomplete.getPlacePredictions({ input: input.input });
    }
}
Run Code Online (Sandbox Code Playgroud)

但这不是可观察的,我不能.subscribe做到这一点。

angular

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

如何停止离开 Ionic 3 中的当前页面?

根据 Ionic 3 文档,这应该可以工作:

ionViewWillLeave(): boolean {
    if (this.cantLeave) {
        let alert = this.alertCtrl.create({
            title: 'You can\'t leave',
            subTitle: 'You stay and work.',
            buttons: ['Oh sorry']
        });
        alert.present();
    }
    return this.cantLeave;
}
Run Code Online (Sandbox Code Playgroud)

然而它没有。警报出现,但页面仍会发生变化。但是这里它说return truereturn false会告诉 Ionic 继续页面更改或停止它。 http://ionicframework.com/docs/api/navigation/NavController/

我究竟做错了什么?

cordova ionic-framework ionic3

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

在React中放置通用路由器的位置以及如何定义链接?

这些都是非常基本的问题,但是文档universal-router并没有解释这个问题,它给出的例子似乎在我的React项目中没有用.

我有这个index.js:

import Router from 'universal-router';
import { HomeComponent, HelpComponent, AboutComponent } from './home.jsx';

const routes = [
    { path: '/', action: () => <HomeComponent /> },
    { path: '/home', action: () => <HomeComponent /> },
    { path: '/about', action: () => <AboutComponent /> },
    { path: '/help', action: () => <HelpComponent /> },
    { path: '*', action: () => <h1>Nope.</h1> }
];

const router = new Router(routes);

router.resolve({ path: '/' }).then(component => {
    ReactDOM.render(component, document.getElementById('router-outlet')); …
Run Code Online (Sandbox Code Playgroud)

reactjs react-router

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