我正在尝试将Angular 5.2应用程序更新为Angular 6.我成功地遵循了Angular更新指南中的说明(包括更新angular-cli到v6),现在我正在尝试通过
ng serve --env=local
Run Code Online (Sandbox Code Playgroud)
但这给了我错误:
未知选项:' - env'
我使用多个环境(dev/local/prod),这就是它在Angular 5.2中的工作方式.如何在Angular 6中设置环境?
我不时遇到这个问题,不得不使用已弃用的 Angular 依赖项启动旧的 Angular 项目。
因为我不正常地运行最新的 Node.js 版本(至少是 LTS 版本),所以我经常遇到问题,即我无法运行旧项目。我通过使用节点版本管理器解决了这个问题,但我仍然经常遇到问题,我不确定用于 Angular Version X 的最佳 Node.js 版本是什么。
遗憾的是,官方发行说明对这个主题的处理很简陋,并不是真正的帮助,特别是如果您想知道哪个 Angular 版本您不能再使用特定的 Node.js 版本......
是否有完整的兼容性列表来检查哪个 Angular 版本与哪个 Node.js 版本兼容?
在我的Angular2应用程序中,我正在导入一个这样的组件:
import { PersonsSingleAccountComponent} from
'../persons-information/fragments/persons-single-account/persons-single-account-bookings/persons-single-account-bookings.component'
Run Code Online (Sandbox Code Playgroud)
它给了我lint错误"超过最大线字符".如果我试图在``(反引号)中给出语句,则会抛出错误.
如何解决这个lint错误?
假设我想确保myKey在{ myKey: '' }只包含字符串foo,bar,baz,我可以通过两种方式实现这一目标.
// with a String Literal Type
type MyKeyType = 'foo' | 'bar' | 'baz';
// or with a String Enum
enum MyKeyType {
FOO = 'foo',
BAR = 'bar',
BAZ = 'baz'
}
Run Code Online (Sandbox Code Playgroud)
我想知道其中一个的利弊在哪里,因为两个看起来都是一样的(从我访问例如条件检查的值的方式来看).
我在TS文档中发现的唯一区别是Enums是运行时的真实对象,在某些情况下可能是可取的.
我尝试让 Angular Elements 在 IE11 中工作。我的自定义元素(简单按钮)已经显示,输入绑定按预期工作,但输出绑定没有。
在 IE 11 中单击我的自定义元素按钮会导致错误:
该对象不支持此操作
到目前为止我做了什么:
ng add @angular/elements(在 IE 中无法正常工作)将所有 Angular 包更新为 7.2.1
将以下 polyfills 添加到polyfills.ts:
import 'core-js/shim'
import '@webcomponents/shadydom/shadydom.min.js';
import '@webcomponents/custom-elements/src/native-shim';
import '@webcomponents/custom-elements/custom-elements.min';
Run Code Online (Sandbox Code Playgroud)
手动引导模块
ng build --output-hashing=none并将所有生成的文件打包到btn-element.js其中http-server用于本地测试(请参阅下面的index.html)。
我错过了特定的 polyfill 还是我做错了什么?或者它只是不可能?
app.module.ts:
@NgModule({
declarations: [ ButtonComponent ],
imports: [ BrowserModule ],
entryComponents: [ ButtonComponent ]
})
export class AppModule {
constructor(private injector: Injector) {
const customBtn = createCustomElement(ButtonComponent, { injector …Run Code Online (Sandbox Code Playgroud) internet-explorer-11 custom-element angular angular-elements
Angular CLI提供了在构建项目时替换文件的可能性。我想使用此功能将默认样式的SCSS文件替换为包含客户特定CSS的SCSS文件。
但是Angular CLI似乎不能替换SCSS文件。我怎样才能做到这一点?
我尝试过的
environment.default.ts
export const environment = {
name: 'default'
};
Run Code Online (Sandbox Code Playgroud)
环境特殊
export const environment = {
name: 'special'
};
Run Code Online (Sandbox Code Playgroud)
默认/_scss-config.scss
@debug ('default'); // gets called but should never be called
Run Code Online (Sandbox Code Playgroud)
特殊的/_scss-config.scss
@debug ('special'); // never gets called
Run Code Online (Sandbox Code Playgroud)
angular.json(仅相关部分)
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"fileReplacements": [
{
"replace": "src/environments/environment.default.ts",
"with": "src/environments/environment.special.ts"
},
{
"replace": "src/scss/default/_scss-config.scss",
"with": "src/scss/special/_scss-config.scss"
}
],
"stylePreprocessorOptions": {
"includePaths": [
"src/scss/default"
]
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
主要
import …Run Code Online (Sandbox Code Playgroud)