Deliver web apps with confidence 🚀
Find a file
Paul Gschwendtner 4eeb6cf24d fix(ngcc): libraries using spread in object literals cannot be processed (#34661)
Consider a library that uses a shared constant for host bindings. e.g.

```ts
export const BASE_BINDINGS= {
  '[class.mat-themed]': '_isThemed',
}

----

@Directive({
  host: {...BASE_BINDINGS, '(click)': '...'}
})
export class Dir1 {}

@Directive({
  host: {...BASE_BINDINGS, '(click)': '...'}
})
export class Dir2 {}
```

Previously when these components were shipped as part of the
library to NPM, consumers were able to consume `Dir1` and `Dir2`.
No errors showed up.

Now with Ivy, when ngcc tries to process the library, an error
will be thrown. The error is stating that the host bindings should
be an object (which they obviously are). This happens because
TypeScript transforms the object spread to individual
`Object.assign` calls (for compatibility).

The partial evaluator used by the `@Directive` annotation handler
is unable to process this expression because there is no
integrated support for `Object.assign`. In View Engine, this was
not a problem because the `metadata.json` files from the library
were used to compute the host bindings.

Fixes #34659

PR Close #34661
2020-01-23 10:29:58 -08:00
.circleci ci: move setup of bazel configurations into the env init scripts (#34834) 2020-01-22 14:37:02 -05:00
.devcontainer build: update the recommended Dockerfile for VSCode remote development (#34697) 2020-01-09 13:31:14 -08:00
.github fix(docs-infra): convert hard-coded comparing-observables examples into a proper mini-app (#34327) 2020-01-21 13:14:46 -05:00
.vscode build: migrate references and scripts that set to build with ivy via compile=aot to use config=ivy (#33983) 2019-11-26 16:38:41 -05:00
aio docs: update payload size limits for angular.io application (#34916) 2020-01-22 16:29:09 -08:00
docs docs: edit golden file error description (#34871) 2020-01-21 14:25:38 -05:00
integration build: upgrade to bazel 2.0.0 (#34877) 2020-01-23 10:05:06 -08:00
modules build: remove @angular/http from modules (#34892) 2020-01-22 13:39:17 -08:00
packages fix(ngcc): libraries using spread in object literals cannot be processed (#34661) 2020-01-23 10:29:58 -08:00
scripts build: package-build & release scripts should handle new pkg_npm naming (#34736) 2020-01-15 14:58:08 -05:00
third_party build: update to yarn@1.21.1 (#34384) 2019-12-16 07:40:01 -08:00
tools revert: refactor(ivy): remove styleSanitizer instruction in favor of an inline param (#34480) (#34910) 2020-01-22 15:59:33 -05:00
.bazelignore build: add integration/platform-server/node_modules to .bazelignore (#33765) 2019-11-22 16:52:09 -05:00
.bazelrc build: add --stamp flag to the release config (#34890) 2020-01-22 12:34:13 -05:00
.clang-format feat(tooling): Add a .clang-format for automated JavaScript formatting. 2015-04-02 08:44:34 -07:00
.editorconfig build: use https link to editorconfig.org in .editorconfig (#27664) 2018-12-18 09:30:09 -08:00
.gitattributes test: fix ts api guardian and public guard tests on windows (#30105) 2019-04-26 16:32:22 -07:00
.gitignore docs: add info on setting up VSCode remote development using docker containers (#33790) 2019-11-13 13:33:22 -08:00
.mailmap build: add a Git .mailmap with my new name (#19550) 2017-10-09 14:35:30 -07:00
.nvmrc build: update .nvmrc to correct node version (#33636) 2019-11-06 21:23:07 +00:00
browser-providers.conf.js ci: re-enable chrome mobile tests on android (#32447) 2019-09-03 11:58:30 -07:00
BUILD.bazel ci: fix saucelabs bazel tests terminating after 5min (#34707) 2020-01-09 13:30:39 -08:00
CHANGELOG.md release: cut the v9.0.0-rc.10 release 2020-01-22 09:40:20 -08:00
CODE_OF_CONDUCT.md docs: fix community tab in GitHub by copying CoC 2018-02-27 19:02:30 -08:00
CONTRIBUTING.md docs: document golden file requirement (#33900) 2020-01-07 10:58:54 -08:00
gulpfile.js build: remove obsolete build related tools and helper scripts (#34058) 2019-12-02 10:57:12 -08:00
karma-js.conf.js build: remove modules/angular1_router (#34551) 2020-01-07 10:42:31 -08:00
LICENSE build: bump year (#34651) 2020-01-13 07:21:43 -08:00
package.json build: upgrade to bazel 2.0.0 (#34877) 2020-01-23 10:05:06 -08:00
protractor-perf.conf.js fixup! test(ivy): make the test run with benchpress (#30449) 2019-05-16 20:04:04 -07:00
README.md docs: fix typo of Typescript to TypeScript (#32153) 2019-08-15 12:44:41 -07:00
shims_for_IE.js Revert "refactor: add license header to JS files & format files (#12035)" 2016-10-04 14:06:41 -07:00
test-events.js refactor: rename unpatched event flag in Zone from BLACK_LISTED_EVENTS to UNPATCHED_EVENTS (#29617) 2019-10-04 08:44:58 -07:00
test-main.js feat(ivy): i18n - implement compile-time inlining (#32881) 2019-10-09 13:19:38 -07:00
tslint.json style: enforce disallowance of object constructor (#33211) 2019-12-03 10:08:26 -08:00
WORKSPACE build: update to rules_nodejs 1.1.0 (#34736) 2020-01-15 14:58:09 -05:00
yarn.lock build: upgrade to bazel 2.0.0 (#34877) 2020-01-23 10:05:06 -08:00
yarn.lock.readme.md build: remove travisci leftovers (#27979) 2019-01-09 10:41:16 -08:00

CircleCI BrowserStack Status Join the chat at https://gitter.im/angular/angular npm version

Angular

Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages.

Quickstart

Get started in 5 minutes.

Changelog

Learn about the latest improvements.

Want to help?

Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on our guidelines for contributing and then check out one of our issues in the hotlist: community-help.