我最近更新到最新的 angular 版本 9 并创建了一个应用程序。我使用以下命令使这个应用程序通用:ng add @nguniversal/express-engine 然后我使用以下命令构建应用程序:npm run build:ssr && npm run serve:ssr
现在 dist 文件夹是用浏览器和服务器文件夹创建的,但在 dist 根目录中没有创建 server.js 文件,而且当我用 angular 9 构建应用程序时,也没有创建 webpack 配置文件。请告诉我一个方法将我在 angular 9 上构建的新应用程序部署到 Firebase 云功能和托管
从 Angular 8 更新到 Angular 9 几天后,我在很多地方都遇到了这个问题。早些时候它工作正常。
任何人都可以帮助我有什么问题。下面的示例代码
list.reduce((acc, curr) => {
const obj = {};
obj['x'] = curr['Y'];
});
Run Code Online (Sandbox Code Playgroud) 我正在将 angular 7 应用程序迁移到 angular 9,它使用服务器端渲染(angular 通用)和 angular i18n 用于 2 种语言(法语和英语)。
在旧的 angular 7 流程中,由于我使用的是 AOT,因此我必须为生产进行 5 次构建:
然后,在server.ts我动态加载正确的服务器包
旧服务器.ts
app.engine('html', (_, options: any, callback) => {
const isFR= options.req.url.indexOf('site-fr') >= 0 ;
const {AppServerModuleNgFactory, LAZY_MODULE_MAP} = isFR ? require('./dist/server/fr/main') : require('./dist/server/en/main');
// Our index.html we'll use as our template
const template = readFileSync(join(DIST_FOLDER, 'browser', isFR ? 'fr' : 'en', 'index.html')).toString();
renderModuleFactory(AppServerModuleNgFactory, {
// Our …Run Code Online (Sandbox Code Playgroud) server-side-rendering angular-i18n angular-universal angular angular9
所以我一直在构建一个 Angular 9 应用程序,其中有一个客户仪表板来管理他们保存在服务器上的模板。可以通过激活系统在不同设备上查看这些模板,从而将设备绑定到用户。
所以让https://templates.com我们说我们有/login, /dashboards,/manage带有查看和编辑数据的子路径。在这个 url 上,我们也在/:companyName这个路径上请求一个模板,其中包含带有插值字符串的 html,以及将被动态加载的 css。
到目前为止,由于alarm9k 的帖子,我能够实现这一目标。
此解决方案发生的唯一问题是,在构建应用程序时您无法使用,ng build --prod因为 using--prod将不起作用,因为 angular 编译器未包含在 AOT 中,因此您陷入了 JIT。
这将导致一个更大的应用程序,在我的情况下,大小几乎是 42MB。所以我想减小文件大小,因为这会极大地影响应用程序的延迟。我一直在查看应用程序和 atm 的统计信息,它的延迟 http p95 延迟为 1.2 秒,http 平均延迟为 340 毫秒。
当使用不同的网站速度测试并选择英国作为测试应该运行的地方。我得到的加载时间值大约为 600-900 毫秒。检查多个位置时,它给了我 5 秒的平均加载时间。
所以我想知道是否有办法将应用程序分成 2 个,其中一个处于 AOT 模式,另一个处于 JIT 模式,如果将一部分保持在 JIT 模式下是安全的,并且这是否可以最大限度地减少申请与否。
如果这是不可能的,我想知道最小化此应用程序的最佳方法是什么,以及如何做到这一点。
或者,如果有一种方法至少可以使应用程序更安全,因为在 JIT 模式下可以在浏览器中查看所有代码。
我忘了提到,在我的情况下,我使用 socket.js 作为激活系统,因此仪表板和模板有些关联。因此,当转到/:companyname并且设备未连接之前,它会自动转到/activate生成代码的位置并侦听用户是否输入该代码,以便将设备连接到用户帐户。
我一直在读到 …
我是角度的初学者,我正在使用角度材质对话框。首先,我将材料添加到我的项目中并从@angular/material.
当我在中添加 ( import { MatDialogModule } from '@angular/material/dialog';)) 时app.module.ts,在编译项目时出现以下错误
ERROR in node_modules/@angular/cdk/coercion/array.d.ts(10,60): error
TS1005: ',' expected.
node_modules/@angular/cdk/coercion/array.d.ts(10,61): error TS1005:
',' expected. node_modules/@angular/cdk/coercion/array.d.ts(10,75):
error TS1144: '{' or ';' expected.
node_modules/@angular/cdk/coercion/array.d.ts(10,77): error TS1011: An
element access expression should take an argument.
Run Code Online (Sandbox Code Playgroud)
为什么?
这是我的 package.json:
{
"name": "sales-maret",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/animations": "^7.2.16",
"@angular/cdk": …Run Code Online (Sandbox Code Playgroud) 使用新的 Angular 9 @angular/localize现在可以直接从打字稿翻译代码。由于它的用法没有正式记录,我在这篇文章中找到了一些提示 。
$localize`:@@my-trans-unit-id:` // IT WORKS
Run Code Online (Sandbox Code Playgroud)
当 ID 直接传递给函数时,这可以正常工作,但是如果我希望 ID 是动态的(并传递一个变量),它就不起作用,在不解析或翻译的情况下呈现 ID。
我通过这种方式传递变量来尝试它:
const id = "my-trans-unit-id";
$localize`:@@${id}:`; // NOT WORKING
$localize`:@@`+id+`:`; // NOT WORKING
Run Code Online (Sandbox Code Playgroud) 我正在从 Angular 8.0 升级到 Angular 9.1.1。通过一些工作,一切都可以正常构建并运行。我遇到了本地化问题https://angular.io/guide/migration-localize并遵循了这些说明 - 这使我的项目能够构建和运行!但是,当我运行测试(业力/茉莉花)时,我仍然遇到这个问题
我使用 CLI 来升级我的项目。我似乎找不到任何其他迁移本地化所需的步骤。
我正在使用 TestBed 进行单元测试,但在调用 时失败TestBed.createComponent,抛出错误:
Error: It looks like your application or one of its dependencies is using i18n.
Angular 9 introduced a global `$localize()` function that needs to be loaded.
Please run `ng add @angular/localize` from the Angular CLI.
(For non-CLI projects, add `import '@angular/localize/init';` to your `polyfills.ts` file.
For server-side rendering applications add the import to your `main.server.ts` file.)
Run Code Online (Sandbox Code Playgroud)
失败测试组件模板中的一段 HTML 示例是:
<span i18n> …Run Code Online (Sandbox Code Playgroud) 我是 Angular 的新手。我刚刚完成了我的 Angular Web 应用程序的开发。当我在生产过程中使用 ng serve 为我的应用程序提供服务时,一切正常。我添加了角度通用。现在,当我运行 npm run dev:ssr 或 npm run build:ssr && npm run serve:ssr 时,我的应用程序将拒绝打开,并在控制台中抛出 NetworkError 响应。我注意到这个错误发生在通过类'constructors(){..}'发送的http请求的次数。我浏览了几个解决方案,但无法了解我做错了什么。我的后端是用 nodejs 和 express 开发的。我会很感激我能得到的任何帮助。这是我总是在控制台中得到的错误响应的完整示例。
ERROR NetworkError
at XMLHttpRequest.send (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:200768:19)
at Observable._subscribe (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:19025:17)
at Observable._trySubscribe (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:186304:25)
at Observable.subscribe (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:186290:22)
at scheduleTask (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:105897:32)
at Observable._subscribe (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:105959:13)
at Observable._trySubscribe (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:186304:25)
at Observable.subscribe (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:186290:22)
at subscribeToResult (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:196385:23)
at MergeMapSubscriber._innerSub (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:191575:116)```
Run Code Online (Sandbox Code Playgroud) 我正在使用@ngneat/until-destroy 这个npm 包来自动取消订阅 observables。我曾经checkProperties: true自动取消订阅 observables。
但是,我不知道如何测试它。observable 是否被取消订阅?
我的问题很简单。这段代码是否有效,或者我是否必须在订阅前使用这样的管道
.pipe(untilDestroyed(this))
Run Code Online (Sandbox Code Playgroud)
先感谢您
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
@UntilDestroy({ checkProperties: true })
@Component({
selector: 'app-view-all-purchase',
templateUrl: './view-all-purchase.component.html',
styleUrls: ['./view-all-purchase.component.scss']
})
export class ViewAllPurchaseComponent implements OnInit, OnDestroy {
ngOnInit() {
this.subscibe1 = this.vendorService.five_vendors().subscribe(data => {
if(data){
console.log(data)
this.vendor_list = data
}})
}
ngOnDestroy() {
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个像这样的组件
import { Component } from '@angular/core';
interface ItemBaseType {
foo: boolean;
}
interface ItemType extends ItemBaseType {
bar: boolean;
}
@Component({
selector: 'ac-foo',
template: `<div *ngIf="item.bar">Hello</div>`,
})
export class FooComponent {
public item: ItemType;
}
Run Code Online (Sandbox Code Playgroud)
我在 Angular 9 应用程序上启用了fullTemplateTypeCheck 和 strictTemplates,它在运行时引发异常ng serve:
类型“ItemBaseType”上不存在属性“bar”。
但bar存在于ItemType.
出了什么问题?
angular ×10
angular9 ×10
typescript ×3
angular-i18n ×2
javascript ×2
angular-aot ×1
angular-cli ×1
angular-jit ×1
dialog ×1
firebase ×1
localization ×1
node.js ×1
observable ×1
rxjs ×1
testbed ×1