mirror of
https://github.com/angular/angular.git
synced 2026-09-14 13:54:52 +08:00
Compare commits
326 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 43525adab1 | |||
| d0214e70c0 | |||
| e141aa5544 | |||
| 3b6d2de018 | |||
| 815f69b5af | |||
| aa9a86cfd5 | |||
| cbea3b9cfb | |||
| c7fe799ef9 | |||
| a20ef16d82 | |||
| 565731dfb6 | |||
| c58e15a4b0 | |||
| e4bcecba11 | |||
| f7dc096a5d | |||
| 52c07e403e | |||
| 900b18ae37 | |||
| ae37884934 | |||
| 68619112e9 | |||
| a607930dc0 | |||
| 57491e470a | |||
| e7851a597b | |||
| edfcbb43c5 | |||
| 87b723b8e6 | |||
| 08c88f8919 | |||
| 4609a2bd55 | |||
| 0bad739445 | |||
| b0e78c7431 | |||
| 2e8c35989d | |||
| 4420358aef | |||
| 2596ee7bf5 | |||
| 678bce2419 | |||
| 3a46ad96ea | |||
| 28ee9864a4 | |||
| c2bcf6c9e6 | |||
| 9b90c03a9f | |||
| 03dcdbd788 | |||
| 1f4b9293a5 | |||
| 30c5d2714d | |||
| 8022e2d007 | |||
| 875598e292 | |||
| 1c5172eeac | |||
| 751491701e | |||
| 564ebacbfc | |||
| 0a2191f8e7 | |||
| 52cd8c928a | |||
| 1f84ac1d5f | |||
| d5555558d0 | |||
| 150b2ece1d | |||
| a4e03d3f7a | |||
| d43e3515e1 | |||
| b6de210feb | |||
| c909bb8f57 | |||
| 388f4056e6 | |||
| cffba6fa0b | |||
| 1449c5c8ff | |||
| b99520101f | |||
| 876069ee94 | |||
| 007ffd3374 | |||
| b575707ef2 | |||
| 4f4880b17f | |||
| effde9d1bf | |||
| 04450b48c5 | |||
| 26a1197bc7 | |||
| bb55ec4f56 | |||
| a8dd75879a | |||
| 6bec2d47f3 | |||
| e3bb6fcd82 | |||
| 7a4d9805ea | |||
| c580fbb60c | |||
| 89c02980ae | |||
| d6c217b777 | |||
| c38dce7d7a | |||
| afb036309a | |||
| e9ddc57f94 | |||
| 921703f388 | |||
| 51cc14292d | |||
| 8dd5216c9e | |||
| 21f523699b | |||
| 568a69cfda | |||
| e218a8b839 | |||
| bc23ed0012 | |||
| e56cb5fc9f | |||
| 5999c837ca | |||
| cbe01a3ffa | |||
| 4d18e317ad | |||
| 343a54654f | |||
| c6d10b3e3a | |||
| dc8d84689c | |||
| 65bc1fe248 | |||
| 3e365ba81e | |||
| 9ecc115e73 | |||
| 768d4ac94d | |||
| df2ff0497d | |||
| c9f5b0791f | |||
| 7115139087 | |||
| 6109d62d6a | |||
| 49c87890de | |||
| 829ed3f8c2 | |||
| 33c9579212 | |||
| 9c45151622 | |||
| 872204ad0b | |||
| a257eeeb7c | |||
| 35ceed2061 | |||
| a8ac3be123 | |||
| 8fdac8f436 | |||
| 9759bca339 | |||
| 384c046985 | |||
| e453d37dee | |||
| 3b9817afe9 | |||
| 2d9bfdf842 | |||
| 643738a344 | |||
| b7809d554a | |||
| b5b09dcca4 | |||
| 6edcc1774d | |||
| ae9c053618 | |||
| 3361c1970c | |||
| cb1fcc8b06 | |||
| 9928dc0251 | |||
| f91420c714 | |||
| 426c0a7311 | |||
| 922a602831 | |||
| d59330b1d1 | |||
| cc19993c54 | |||
| c97d217dfb | |||
| d97d127ba3 | |||
| 7255fbc2ba | |||
| 8da896f541 | |||
| 525d53acb5 | |||
| 73c6c64f82 | |||
| 36a0358fe9 | |||
| 01cc99589b | |||
| 75bb931889 | |||
| 88ba98a468 | |||
| 9346d61d92 | |||
| 1c0db8c6c7 | |||
| be9b19e820 | |||
| 0255a2c631 | |||
| 39e1818cb4 | |||
| b33dc4e408 | |||
| c7b40ba15a | |||
| 77b77ff525 | |||
| 6e66916c51 | |||
| 25333db1ce | |||
| 63ad5bfdfa | |||
| af43162cd7 | |||
| d70f831fef | |||
| ede0cfefc4 | |||
| 45792f145c | |||
| f629f9f07a | |||
| d8fcb995f4 | |||
| c691b668d1 | |||
| d7763a90e8 | |||
| 0aa9239524 | |||
| 4981c289aa | |||
| 0dcadabd34 | |||
| eed5adac82 | |||
| 98de217640 | |||
| a66421e643 | |||
| 77a5157fba | |||
| 624dc4c304 | |||
| 73cdd8ffa0 | |||
| 3fdc2614f3 | |||
| dfff5d344a | |||
| 7270a1fc6a | |||
| 849d11dd72 | |||
| 05a9a764fe | |||
| dc708c12ad | |||
| 163e04445e | |||
| 30db14b5db | |||
| 947b4516e8 | |||
| 0e09009f7d | |||
| b0a58bd3ba | |||
| 459c4fd468 | |||
| f9af98460c | |||
| 511f75f5d6 | |||
| 2a11cdab51 | |||
| f9c1f08957 | |||
| 10c45239a6 | |||
| 6b823d7071 | |||
| 0067edd146 | |||
| 4b9d4fa3e7 | |||
| ea05cfd0c5 | |||
| bc45029a54 | |||
| 658ed1f904 | |||
| 9b6198c16f | |||
| dc975bac93 | |||
| 4f5d094f3a | |||
| bae81269c7 | |||
| 5b463f4541 | |||
| f2b6fd8705 | |||
| 85032460f1 | |||
| e918250a06 | |||
| fe1fa7d6c2 | |||
| 479d4962c8 | |||
| beae177b93 | |||
| 8d4460d195 | |||
| 9246708529 | |||
| ec2bca84bd | |||
| a641e68da2 | |||
| 6a234bac78 | |||
| 04da9fbdd1 | |||
| b282cfa1d7 | |||
| 5d5453c16a | |||
| 990067a0c6 | |||
| c8341470cc | |||
| 6cc06be712 | |||
| 773beae102 | |||
| 6889f91781 | |||
| 1c4d0ef1e1 | |||
| 04629c9f29 | |||
| c0f62d044a | |||
| 2b4ab790b7 | |||
| e1bc93fdb4 | |||
| e6ec22f2e4 | |||
| 49fae1f81d | |||
| 097fdffc91 | |||
| 7d8154e2b7 | |||
| 909f012f1d | |||
| 5ffecd9963 | |||
| 87dc8511cc | |||
| 17bae32271 | |||
| 5895ddbcd1 | |||
| 8e6a80a92b | |||
| 4fd260d667 | |||
| 20cc846191 | |||
| f885750764 | |||
| 1fb6724b1f | |||
| 6221227e10 | |||
| ee610fdb46 | |||
| 7b0e25598a | |||
| c2c83eb523 | |||
| 2acb8d1865 | |||
| 37b1863cdb | |||
| 8cddb0cd3b | |||
| e55ab5c418 | |||
| 0830885c95 | |||
| 6e198b519b | |||
| 897d5ad76e | |||
| 7bd8741109 | |||
| 87b5026e48 | |||
| 2bcbbda789 | |||
| 804a694c9e | |||
| 927fa939b0 | |||
| 96c4ec7d3c | |||
| dc9435044e | |||
| 81907f6300 | |||
| 90cc6c59c9 | |||
| bac3c85846 | |||
| 6d1df308c4 | |||
| b333a1fe5c | |||
| e835fab498 | |||
| 2114a134fd | |||
| 74578bc0f8 | |||
| 7f44a4781b | |||
| 9d17a137ac | |||
| 37ce86b546 | |||
| 0b3bc1af4c | |||
| d95fa13343 | |||
| 884ff367ec | |||
| 92fb804205 | |||
| ba5b9ca8b7 | |||
| af6b3b51b2 | |||
| 419f1d7221 | |||
| e3e564b52b | |||
| 1f84db80f2 | |||
| 9e39bb655c | |||
| f4637b54bd | |||
| b027a48fb5 | |||
| 4e8a4ee979 | |||
| f51c6ff888 | |||
| 3a2c86c2a7 | |||
| ad69a53679 | |||
| e90bc598fd | |||
| d2906d2643 | |||
| 2a691b8b2e | |||
| 2b98af571f | |||
| d10eb0801b | |||
| 2ad2c26f16 | |||
| e5af4e9f58 | |||
| 010e6d4341 | |||
| a5cadd7b6f | |||
| 4e7c2c65fa | |||
| c80323a45a | |||
| a1ed4f8efb | |||
| db55842610 | |||
| 52053d0a97 | |||
| 3efd5ae403 | |||
| 620aaf4d28 | |||
| 88dd08c020 | |||
| bc3a37ce0f | |||
| 43bd580a38 | |||
| b24bb2ae71 | |||
| 0280150144 | |||
| e251ece18d | |||
| ab257b3701 | |||
| 4dc4be61ed | |||
| d6060539c0 | |||
| 542842580f | |||
| a1ff47c738 | |||
| 13733161bc | |||
| 8b2b5ef903 | |||
| 2894602150 | |||
| bda04cae71 | |||
| d1447d43e7 | |||
| 16f41cd948 | |||
| c85710da4f | |||
| 9684cd36b1 | |||
| d799e7fa0c | |||
| 7a0c69f542 | |||
| df465c624d | |||
| c0f5ba3d36 | |||
| dad42c8cd6 | |||
| a4ff071e3f | |||
| 91ea316dc2 | |||
| 115d04c0fd | |||
| 9438d48b89 | |||
| c6e952647d | |||
| e655846627 | |||
| ba110791b5 | |||
| 9a3b82f19d | |||
| 1179dc8cb3 | |||
| a5fe8b9589 | |||
| afed386f67 | |||
| 16d6c9643c | |||
| e866a4c38d | |||
| fb436c5294 | |||
| 886bf37cd1 |
@@ -29,7 +29,6 @@ integration/hello_world__systemjs_umd/node_modules
|
||||
integration/i18n/node_modules
|
||||
integration/injectable-def/node_modules
|
||||
integration/ivy-i18n/node_modules
|
||||
integration/language_service_plugin/node_modules
|
||||
integration/ng_elements/node_modules
|
||||
integration/ng_elements_schematics/node_modules
|
||||
integration/ng_update/node_modules
|
||||
@@ -56,7 +55,6 @@ integration/hello_world__systemjs_umd/.yarn_local_cache
|
||||
integration/i18n/.yarn_local_cache
|
||||
integration/injectable-def/.yarn_local_cache
|
||||
integration/ivy-i18n/.yarn_local_cache
|
||||
integration/language_service_plugin/.yarn_local_cache
|
||||
integration/ng_elements/.yarn_local_cache
|
||||
integration/ng_elements_schematics/.yarn_local_cache
|
||||
integration/ng_update/.yarn_local_cache
|
||||
@@ -83,7 +81,6 @@ integration/hello_world__systemjs_umd/NPM_PACKAGE_MANIFEST.json
|
||||
integration/i18n/NPM_PACKAGE_MANIFEST.json
|
||||
integration/injectable-def/NPM_PACKAGE_MANIFEST.json
|
||||
integration/ivy-i18n/NPM_PACKAGE_MANIFEST.json
|
||||
integration/language_service_plugin/NPM_PACKAGE_MANIFEST.json
|
||||
integration/ng_elements/NPM_PACKAGE_MANIFEST.json
|
||||
integration/ng_elements_schematics/NPM_PACKAGE_MANIFEST.json
|
||||
integration/ng_update/NPM_PACKAGE_MANIFEST.json
|
||||
|
||||
@@ -114,15 +114,11 @@ build:remote --cpu=k8
|
||||
build:remote --host_cpu=k8
|
||||
|
||||
# Toolchain and platform related flags
|
||||
build:remote --host_javabase=@rbe_ubuntu1604_angular//java:jdk
|
||||
build:remote --javabase=@rbe_ubuntu1604_angular//java:jdk
|
||||
build:remote --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8
|
||||
build:remote --java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8
|
||||
build:remote --crosstool_top=@rbe_ubuntu1604_angular//cc:toolchain
|
||||
build:remote --extra_toolchains=@rbe_ubuntu1604_angular//config:cc-toolchain
|
||||
build:remote --extra_execution_platforms=//tools:rbe_ubuntu1604-angular
|
||||
build:remote --host_platform=//tools:rbe_ubuntu1604-angular
|
||||
build:remote --platforms=//tools:rbe_ubuntu1604-angular
|
||||
build:remote --crosstool_top=//dev-infra/bazel/remote-execution/cpp:cc_toolchain_suite
|
||||
build:remote --extra_toolchains=//dev-infra/bazel/remote-execution/cpp:cc_toolchain
|
||||
build:remote --extra_execution_platforms=//dev-infra/bazel/remote-execution:platform
|
||||
build:remote --host_platform=//dev-infra/bazel/remote-execution:platform
|
||||
build:remote --platforms=//dev-infra/bazel/remote-execution:platform
|
||||
|
||||
# Remote instance and caching
|
||||
build:remote --remote_instance_name=projects/internal-200822/instances/default_instance
|
||||
|
||||
+41
-64
@@ -19,23 +19,25 @@ version: 2.1
|
||||
# 1) yarn lock file changes --> cached "node_modules" are different.
|
||||
# 2) bazel repository definitions change --> cached bazel repositories are different.
|
||||
# Windows needs its own cache key because binaries in node_modules are different.
|
||||
# **NOTE 1 **: If you change the cache key prefix, also sync the cache_key_fallback to match.
|
||||
# **NOTE 2 **: Keep the static part of the cache key as prefix to enable correct fallbacks.
|
||||
# **NOTE 1 **: In order to avoid the cache from growing indefinitely and causing slow-downs, we invalidate the cache monthly.
|
||||
# (See https://support.circleci.com/hc/en-us/articles/360012618473-Creating-a-daily-cache.)
|
||||
# **NOTE 2 **: If you change the cache key prefix, also sync the cache_key_fallback to match.
|
||||
# **NOTE 3 **: Keep the static part of the cache key as prefix to enable correct fallbacks.
|
||||
# See https://circleci.com/docs/2.0/caching/#restoring-cache for how prefixes work in CircleCI.
|
||||
var_3: &cache_key v4-angular-node-14-{{ checksum ".bazelversion" }}-{{ checksum "yarn.lock" }}-{{ checksum "WORKSPACE" }}-{{ checksum "packages/bazel/package.bzl" }}-{{ checksum "aio/yarn.lock" }}
|
||||
var_3: &cache_key v4-angular-node-14-{{ checksum "month.txt" }}-{{ checksum ".bazelversion" }}-{{ checksum "yarn.lock" }}-{{ checksum "WORKSPACE" }}-{{ checksum "packages/bazel/package.bzl" }}-{{ checksum "aio/yarn.lock" }}
|
||||
# We invalidate the cache if the Bazel version changes because otherwise the `bazelisk` cache
|
||||
# folder will contain all previously used versions and ultimately cause the cache restoring to
|
||||
# be slower due to its growing size.
|
||||
var_4: &cache_key_fallback v4-angular-node-14-{{ checksum ".bazelversion" }}
|
||||
var_4: &cache_key_fallback v4-angular-node-14-{{ checksum "month.txt" }}-{{ checksum ".bazelversion" }}
|
||||
|
||||
# Windows needs its own cache key because binaries in node_modules are different.
|
||||
var_3_win: &cache_key_win v4-angular-win-node-14-{{ checksum ".bazelversion" }}-{{ checksum "yarn.lock" }}-{{ checksum "WORKSPACE" }}-{{ checksum "packages/bazel/package.bzl" }}-{{ checksum "aio/yarn.lock" }}
|
||||
var_4_win: &cache_key_win_fallback v4-angular-win-node-14-{{ checksum ".bazelversion" }}
|
||||
var_3_win: &cache_key_win v4-angular-win-node-14-{{ checksum "month.txt" }}-{{ checksum ".bazelversion" }}-{{ checksum "yarn.lock" }}-{{ checksum "WORKSPACE" }}-{{ checksum "packages/bazel/package.bzl" }}-{{ checksum "aio/yarn.lock" }}
|
||||
var_4_win: &cache_key_win_fallback v4-angular-win-node-14-{{ checksum "month.txt" }}-{{ checksum ".bazelversion" }}
|
||||
|
||||
# Cache key for the `components-repo-unit-tests` job. **Note** when updating the SHA in the
|
||||
# cache keys also update the SHA for the "COMPONENTS_REPO_COMMIT" environment variable.
|
||||
var_5: &components_repo_unit_tests_cache_key v1-angular-components-09e68db8ed5b1253f2fe38ff954ef0df019fc25a
|
||||
var_6: &components_repo_unit_tests_cache_key_fallback v1-angular-components-
|
||||
var_5: &components_repo_unit_tests_cache_key v1-angular-components-{{ checksum "month.txt" }}-7cc42f5d835b7971e9ff73e220b801cf7834d515
|
||||
var_6: &components_repo_unit_tests_cache_key_fallback v1-angular-components-{{ checksum "month.txt" }}
|
||||
|
||||
# Workspace initially persisted by the `setup` job, and then enhanced by `build-npm-packages` and
|
||||
# `build-ivy-npm-packages`.
|
||||
@@ -64,6 +66,14 @@ var_10: &only_on_master
|
||||
only:
|
||||
- master
|
||||
|
||||
# Filter to run a job on all releasable branches.
|
||||
var_11: &only_release_branches
|
||||
filters:
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- /\d+\.\d+\.x/
|
||||
|
||||
# Executor Definitions
|
||||
# https://circleci.com/docs/2.0/reusing-config/#authoring-reusable-executors
|
||||
# **NOTE 1**: Pin to exact images using an ID (SHA). See https://circleci.com/docs/2.0/circleci-images/#using-a-docker-image-id-to-pin-an-image-to-a-fixed-version.
|
||||
@@ -180,6 +190,13 @@ commands:
|
||||
name: Setting up alias domain for local host.
|
||||
command: echo "127.0.0.1 $SAUCE_LOCALHOST_ALIAS_DOMAIN" | sudo tee -a /etc/hosts
|
||||
|
||||
save_month_to_file:
|
||||
description: Store the current year and month in a file, so that it can be used for computing the cache key.
|
||||
steps:
|
||||
- run:
|
||||
name: Save month to file
|
||||
command: date +%Y-%m > month.txt
|
||||
|
||||
# Normally this would be an individual job instead of a command.
|
||||
# But startup and setup time for each individual windows job are high enough to discourage
|
||||
# many small jobs, so instead we use a command for setup unless the gain becomes significant.
|
||||
@@ -187,6 +204,7 @@ commands:
|
||||
description: Setup windows node environment
|
||||
steps:
|
||||
- checkout
|
||||
- save_month_to_file
|
||||
# Install Bazel pre-requisites that aren't in the preconfigured CircleCI Windows VM.
|
||||
- run: ./.circleci/windows-env.ps1
|
||||
- run: node --version
|
||||
@@ -220,6 +238,7 @@ jobs:
|
||||
executor: default-executor
|
||||
steps:
|
||||
- checkout
|
||||
- save_month_to_file
|
||||
- init_environment
|
||||
- run:
|
||||
name: Rebase PR on target branch
|
||||
@@ -407,17 +426,13 @@ jobs:
|
||||
- run: yarn --cwd aio deploy-production
|
||||
|
||||
test_aio_local:
|
||||
parameters:
|
||||
viewengine:
|
||||
type: boolean
|
||||
default: false
|
||||
executor: default-executor
|
||||
steps:
|
||||
- custom_attach_workspace
|
||||
- init_environment
|
||||
- install_chrome_libs
|
||||
# Build aio (with local Angular packages)
|
||||
- run: yarn --cwd aio build-local<<# parameters.viewengine >>-with-viewengine<</ parameters.viewengine >>-ci
|
||||
- run: yarn --cwd aio build-local-ci
|
||||
# Run unit tests
|
||||
- run: yarn --cwd aio test --progress=false --watch=false
|
||||
# Run e2e tests
|
||||
@@ -425,7 +440,7 @@ jobs:
|
||||
# Run PWA-score tests
|
||||
- run: yarn --cwd aio test-pwa-score-localhost $CI_AIO_MIN_PWA_SCORE
|
||||
# Check the bundle sizes.
|
||||
- run: yarn --cwd aio payload-size aio-local<<# parameters.viewengine >>-viewengine<</ parameters.viewengine >>
|
||||
- run: yarn --cwd aio payload-size aio-local
|
||||
|
||||
test_aio_tools:
|
||||
executor: default-executor
|
||||
@@ -440,10 +455,6 @@ jobs:
|
||||
- run: ./aio/aio-builds-setup/scripts/test.sh
|
||||
|
||||
test_docs_examples:
|
||||
parameters:
|
||||
viewengine:
|
||||
type: boolean
|
||||
default: false
|
||||
executor:
|
||||
name: default-executor
|
||||
resource_class: xlarge
|
||||
@@ -457,7 +468,7 @@ jobs:
|
||||
# Run examples tests. The "CIRCLE_NODE_INDEX" will be set if "parallelism" is enabled.
|
||||
# Since the parallelism is set to "5", there will be five parallel CircleCI containers.
|
||||
# with either "0", "1", etc as node index. This can be passed to the "--shard" argument.
|
||||
- run: yarn --cwd aio example-e2e --setup --local <<# parameters.viewengine >>--viewengine<</ parameters.viewengine >> --cliSpecsConcurrency=5 --shard=${CIRCLE_NODE_INDEX}/${CIRCLE_NODE_TOTAL}
|
||||
- run: yarn --cwd aio example-e2e --setup --local --cliSpecsConcurrency=5 --shard=${CIRCLE_NODE_INDEX}/${CIRCLE_NODE_TOTAL}
|
||||
|
||||
# This job should only be run on PR builds, where `CI_PULL_REQUEST` is not `false`.
|
||||
aio_preview:
|
||||
@@ -584,18 +595,6 @@ jobs:
|
||||
publish_snapshot:
|
||||
executor: default-executor
|
||||
steps:
|
||||
# See below - ideally this job should not trigger for non-upstream builds.
|
||||
# But since it does, we have to check this condition.
|
||||
- run:
|
||||
name: Skip this job for Pull Requests and Fork builds
|
||||
# Note: Using `CIRCLE_*` env variables (instead of those defined in `env.sh` so that this
|
||||
# step can be run before `init_environment`.
|
||||
command: >
|
||||
if [[ -n "${CIRCLE_PR_NUMBER}" ]] ||
|
||||
[[ "$CIRCLE_PROJECT_USERNAME" != "angular" ]] ||
|
||||
[[ "$CIRCLE_PROJECT_REPONAME" != "angular" ]]; then
|
||||
circleci step halt
|
||||
fi
|
||||
- custom_attach_workspace
|
||||
- init_environment
|
||||
# CircleCI has a config setting to force SSH for all github connections
|
||||
@@ -719,11 +718,7 @@ jobs:
|
||||
- run:
|
||||
# Run yarn install to fetch the Bazel binaries as used in the components repo.
|
||||
name: Installing dependencies.
|
||||
# TODO: remove this once the repo has been updated to use NodeJS v12 and Yarn 1.19.1.
|
||||
# We temporarily ignore the "engines" because the Angular components repository has
|
||||
# minimum dependency on NodeJS v12 and Yarn 1.19.1, but the framework repository uses
|
||||
# older versions.
|
||||
command: yarn --ignore-engines --cwd ${COMPONENTS_REPO_TMP_DIR} install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn
|
||||
command: yarn --cwd ${COMPONENTS_REPO_TMP_DIR} install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn
|
||||
- save_cache:
|
||||
key: *components_repo_unit_tests_cache_key
|
||||
paths:
|
||||
@@ -733,10 +728,14 @@ jobs:
|
||||
- "/tmp/angular-components-repo"
|
||||
- run:
|
||||
# Updates the `angular/components` `package.json` file to refer to the release output
|
||||
# inside the `packages-dist` directory. Note that it's not necessary to perform a yarn
|
||||
# install as Bazel runs Yarn automatically when needed.
|
||||
# inside the `packages-dist` directory.
|
||||
name: Setting up release packages.
|
||||
command: node scripts/ci/update-deps-to-dist-packages.js ${COMPONENTS_REPO_TMP_DIR}/package.json dist/packages-dist/
|
||||
- run:
|
||||
# Run `yarn install` again to install the Angular packages from `packages-dist/` and update the lockfile.
|
||||
# NOTE: We cannot rely on Bazel to run `yarn install`, because it uses the `--frozen-lockfile` flag and fails.
|
||||
name: Installing local Angular packages.
|
||||
command: yarn --cwd ${COMPONENTS_REPO_TMP_DIR} install --non-interactive --cache-folder ~/.cache/yarn
|
||||
- run:
|
||||
name: "Running `angular/components` unit tests"
|
||||
command: ./scripts/ci/run_angular_components_unit_tests.sh
|
||||
@@ -833,22 +832,12 @@ workflows:
|
||||
- test_aio_local:
|
||||
requires:
|
||||
- build-npm-packages
|
||||
- test_aio_local:
|
||||
name: test_aio_local_viewengine
|
||||
viewengine: true
|
||||
requires:
|
||||
- build-npm-packages
|
||||
- test_aio_tools:
|
||||
requires:
|
||||
- build-npm-packages
|
||||
- test_docs_examples:
|
||||
requires:
|
||||
- build-npm-packages
|
||||
- test_docs_examples:
|
||||
name: test_docs_examples_viewengine
|
||||
viewengine: true
|
||||
requires:
|
||||
- build-npm-packages
|
||||
- aio_preview:
|
||||
# Only run on PR builds. (There can be no previews for non-PR builds.)
|
||||
<<: *only_on_pull_requests
|
||||
@@ -861,34 +850,22 @@ workflows:
|
||||
requires:
|
||||
- build-npm-packages
|
||||
- publish_snapshot:
|
||||
# Note: no filters on this job because we want it to run for all upstream branches
|
||||
# We'd really like to filter out pull requests here, but not yet available:
|
||||
# https://discuss.circleci.com/t/workflows-pull-request-filter/14396/4
|
||||
# Instead, the job just exits immediately at the first step.
|
||||
<<: *only_release_branches
|
||||
requires:
|
||||
# Only publish if tests and integration tests pass
|
||||
- test
|
||||
- test_ivy_aot
|
||||
# Only publish if `aio`/`docs` tests using the locally built Angular packages pass
|
||||
- test_aio_local
|
||||
- test_aio_local_viewengine
|
||||
- test_docs_examples
|
||||
- test_docs_examples_viewengine
|
||||
# Get the artifacts to publish from the build-packages-dist job
|
||||
# since the publishing script expects the legacy outputs layout.
|
||||
- build-npm-packages
|
||||
- build-ivy-npm-packages
|
||||
- legacy-unit-tests-saucelabs
|
||||
# Temporarily disabled components-repo-unit-tests to update rules_nodejs to 2.0.0. Breaking changes in
|
||||
# rules_nodejs create a dependency sandwich between angular/angular & angular/components that are very
|
||||
# difficult and time consuming to resolve and involve patching @angular/bazel in components repo such
|
||||
# as https://github.com/angular/components/commit/9e7ba251207df77164d73d66620e619bcbc4d2ad. It is simpler to
|
||||
# 1) land angular/angular upgrade to rule_nodejs 2.0.0 which has breaking changes
|
||||
# 2) land angular/components upgrade to rules_nodejs 2.0.0 using the @angular/bazel builds snapshot
|
||||
# 3) update angular/angular to the landed components commit and re-enable these tests
|
||||
# - components-repo-unit-tests:
|
||||
# requires:
|
||||
# - build-npm-packages
|
||||
- components-repo-unit-tests:
|
||||
requires:
|
||||
- build-npm-packages
|
||||
- test_zonejs:
|
||||
requires:
|
||||
- setup
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@ setPublicVar COMPONENTS_REPO_TMP_DIR "/tmp/angular-components-repo"
|
||||
setPublicVar COMPONENTS_REPO_URL "https://github.com/angular/components.git"
|
||||
setPublicVar COMPONENTS_REPO_BRANCH "master"
|
||||
# **NOTE**: When updating the commit SHA, also update the cache key in the CircleCI `config.yml`.
|
||||
setPublicVar COMPONENTS_REPO_COMMIT "09e68db8ed5b1253f2fe38ff954ef0df019fc25a"
|
||||
setPublicVar COMPONENTS_REPO_COMMIT "7cc42f5d835b7971e9ff73e220b801cf7834d515"
|
||||
|
||||
|
||||
####################################################################################################
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||
|
||||
Please help us process issues more efficiently by filing an
|
||||
issue using one of the following templates:
|
||||
|
||||
https://github.com/angular/angular/issues/new/choose
|
||||
|
||||
Thank you!
|
||||
|
||||
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||
|
||||
@@ -1,40 +1,39 @@
|
||||
---
|
||||
name: "\U0001F41E Bug report"
|
||||
name: "Bug Report"
|
||||
about: Report a bug in the Angular Framework
|
||||
---
|
||||
<!--🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅
|
||||
<!--
|
||||
|
||||
Oh hi there! 😄
|
||||
Oh hi there!
|
||||
|
||||
To expedite issue processing please search open and closed issues before submitting a new one.
|
||||
Existing issues often contain information about workarounds, resolution, or progress updates.
|
||||
|
||||
🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅-->
|
||||
-->
|
||||
|
||||
|
||||
# 🐞 bug report
|
||||
# Bug Report
|
||||
|
||||
### Affected Package
|
||||
<!-- Can you pin-point one or more @angular/* packages as the source of the bug? -->
|
||||
<!-- ✍️edit: --> The issue is caused by package @angular/....
|
||||
<!-- edit: --> The issue is caused by package @angular/....
|
||||
|
||||
|
||||
### Is this a regression?
|
||||
|
||||
<!-- Did this behavior use to work in the previous version? -->
|
||||
<!-- ✍️--> Yes, the previous version in which this bug was not present was: ....
|
||||
<!-- edit: --> Yes, the previous version in which this bug was not present was: ....
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
<!-- ✍️--> A clear and concise description of the problem...
|
||||
<!-- edit: --> A clear and concise description of the problem...
|
||||
|
||||
|
||||
## 🔬 Minimal Reproduction
|
||||
## Minimal Reproduction
|
||||
<!--
|
||||
Please create and share minimal reproduction of the issue starting with this template: https://stackblitz.com/fork/angular-ivy
|
||||
-->
|
||||
<!-- ✍️--> https://stackblitz.com/...
|
||||
<!-- edit: --> https://stackblitz.com/...
|
||||
|
||||
<!--
|
||||
If StackBlitz is not suitable for reproduction of your issue, please create a minimal GitHub repository with the reproduction of the issue.
|
||||
@@ -46,24 +45,22 @@ Issues that don't have enough info and can't be reproduced will be closed.
|
||||
You can read more about issue submission guidelines here: https://github.com/angular/angular/blob/master/CONTRIBUTING.md#submit-issue
|
||||
-->
|
||||
|
||||
## 🔥 Exception or Error
|
||||
## Exception or Error
|
||||
<pre><code>
|
||||
<!-- If the issue is accompanied by an exception or an error, please share it below: -->
|
||||
<!-- ✍️-->
|
||||
|
||||
</code></pre>
|
||||
|
||||
|
||||
## 🌍 Your Environment
|
||||
## Your Environment
|
||||
|
||||
**Angular Version:**
|
||||
<pre><code>
|
||||
<!-- run `ng version` and paste output below -->
|
||||
<!-- ✍️-->
|
||||
|
||||
</code></pre>
|
||||
|
||||
**Anything else relevant?**
|
||||
<!-- ✍️Is this a browser specific issue? If so, please specify the browser and version. -->
|
||||
<!-- Is this a browser specific issue? If so, please specify the browser and version. -->
|
||||
|
||||
<!-- ✍️Do any of these matter: operating system, IDE, package manager, HTTP server, ...? If so, please mention it below. -->
|
||||
<!-- Do any of these matter: operating system, IDE, package manager, HTTP server, ...? If so, please mention it below. -->
|
||||
|
||||
@@ -1,32 +1,31 @@
|
||||
---
|
||||
name: "\U0001F680 Feature request"
|
||||
name: "Feature Request"
|
||||
about: Suggest a feature for Angular Framework
|
||||
|
||||
---
|
||||
<!--🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅
|
||||
<!--
|
||||
|
||||
Oh hi there! 😄
|
||||
Oh hi there!
|
||||
|
||||
To expedite issue processing please search open and closed issues before submitting a new one.
|
||||
Existing issues often contain information about workarounds, resolution, or progress updates.
|
||||
|
||||
🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅-->
|
||||
-->
|
||||
|
||||
|
||||
# 🚀 feature request
|
||||
# Feature Request
|
||||
|
||||
### Relevant Package
|
||||
<!-- Can you pin-point one or more @angular/* packages the are relevant for this feature request? -->
|
||||
<!-- ✍️edit: --> This feature request is for @angular/....
|
||||
<!-- edit: --> This feature request is for @angular/....
|
||||
|
||||
|
||||
### Description
|
||||
<!-- ✍️--> A clear and concise description of the problem or missing capability...
|
||||
<!-- edit: --> A clear and concise description of the problem or missing capability...
|
||||
|
||||
|
||||
### Describe the solution you'd like
|
||||
<!-- ✍️--> If you have a solution in mind, please describe it.
|
||||
<!-- edit: --> If you have a solution in mind, please describe it.
|
||||
|
||||
|
||||
### Describe alternatives you've considered
|
||||
<!-- ✍️--> Have you considered any alternative solutions or workarounds?
|
||||
<!-- edit: --> Have you considered any alternative solutions or workarounds?
|
||||
|
||||
@@ -1,55 +1,48 @@
|
||||
---
|
||||
name: "📚 Docs or angular.io issue report"
|
||||
name: "Docs or angular.io Bug Report"
|
||||
about: Report an issue in Angular's documentation or angular.io application
|
||||
|
||||
---
|
||||
<!--🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅
|
||||
<!--
|
||||
|
||||
Oh hi there! 😄
|
||||
Oh hi there!
|
||||
|
||||
To expedite issue processing please search open and closed issues before submitting a new one.
|
||||
Existing issues often contain information about workarounds, resolution, or progress updates.
|
||||
|
||||
🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅-->
|
||||
-->
|
||||
|
||||
# 📚 Docs or angular.io bug report
|
||||
# Docs or angular.io Bug Report
|
||||
|
||||
### Description
|
||||
|
||||
<!-- ✍️edit:--> A clear and concise description of the problem...
|
||||
<!-- edit: --> A clear and concise description of the problem...
|
||||
|
||||
|
||||
## 🔬 Minimal Reproduction
|
||||
## Minimal Reproduction
|
||||
|
||||
### What's the affected URL?**
|
||||
<!-- ✍️edit:--> https://angular.io/...
|
||||
<!-- edit: --> https://angular.io/...
|
||||
|
||||
### Reproduction Steps**
|
||||
<!-- If applicable please list the steps to take to reproduce the issue -->
|
||||
<!-- ✍️edit:-->
|
||||
|
||||
### Expected vs Actual Behavior**
|
||||
<!-- If applicable please describe the difference between the expected and actual behavior after following the repro steps. -->
|
||||
<!-- ✍️edit:-->
|
||||
|
||||
|
||||
## 📷Screenshot
|
||||
## Screenshot
|
||||
<!-- Often a screenshot can help to capture the issue better than a long description. -->
|
||||
<!-- ✍️upload a screenshot:-->
|
||||
<!-- upload a screenshot:-->
|
||||
|
||||
|
||||
## 🔥 Exception or Error
|
||||
## Exception or Error
|
||||
<pre><code>
|
||||
<!-- If the issue is accompanied by an exception or an error, please share it below: -->
|
||||
<!-- ✍️-->
|
||||
|
||||
</code></pre>
|
||||
|
||||
|
||||
## 🌍 Your Environment
|
||||
## Your Environment
|
||||
|
||||
### Browser info
|
||||
<!-- ✍️Is this a browser specific issue? If so, please specify the device, browser, and version. -->
|
||||
<!-- Is this a browser specific issue? If so, please specify the device, browser, and version. -->
|
||||
|
||||
### Anything else relevant?
|
||||
<!-- ✍️Please provide additional info if necessary. -->
|
||||
<!-- Please provide additional info if necessary. -->
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
---
|
||||
name: ⚠️ Security issue disclosure
|
||||
name: Security Issue Disclosure
|
||||
about: Report a security issue in Angular Framework, Material, or CLI
|
||||
|
||||
---
|
||||
|
||||
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||
|
||||
Please read https://angular.io/guide/security#report-issues on how to disclose security related issues.
|
||||
|
||||
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||
|
||||
@@ -1,16 +1,11 @@
|
||||
---
|
||||
name: "❓ Support request"
|
||||
name: "Support Request"
|
||||
about: Questions and requests for support
|
||||
|
||||
---
|
||||
|
||||
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||
|
||||
Please do not file questions or support requests on the GitHub issues tracker.
|
||||
|
||||
You can get your questions answered using other communication channels. Please see:
|
||||
You can get your questions answered using other communication channels. Please see:
|
||||
https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
|
||||
|
||||
Thank you!
|
||||
|
||||
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
---
|
||||
name: "\U0001F6E0️ Angular CLI"
|
||||
name: "Angular CLI"
|
||||
about: Issues and feature requests for Angular CLI
|
||||
|
||||
---
|
||||
|
||||
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||
|
||||
Please file any Angular CLI issues at: https://github.com/angular/angular-cli/issues/new
|
||||
|
||||
For the time being, we keep Angular CLI issues in a separate repository.
|
||||
|
||||
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
---
|
||||
name: "\U0001F48E Angular Components"
|
||||
name: "Angular Components"
|
||||
about: Issues and feature requests for Angular Components
|
||||
|
||||
---
|
||||
|
||||
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||
|
||||
Please file any Angular Components issues at: https://github.com/angular/components/issues/new
|
||||
|
||||
For the time being, we keep Angular Components issues in a separate repository.
|
||||
|
||||
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||
|
||||
@@ -117,7 +117,6 @@ merge:
|
||||
requiredStatuses:
|
||||
- "ci/circleci: build"
|
||||
- "ci/circleci: lint"
|
||||
- "ci/circleci: publish_snapshot"
|
||||
- "ci/angular: size"
|
||||
- "cla/google"
|
||||
- "google3"
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
name: Feature request triage bot
|
||||
|
||||
on: [workflow_dispatch]
|
||||
|
||||
jobs:
|
||||
feature_triage:
|
||||
if: github.repository == 'angular/angular'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: angular/dev-infra/github-actions/feature-request@29796774d2f41de529a88d99afeb22520f1ba091
|
||||
with:
|
||||
angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }}
|
||||
limit: 50
|
||||
+2
-4
@@ -1,5 +1,4 @@
|
||||
import {join} from 'path';
|
||||
import {exec} from 'shelljs';
|
||||
import {ReleaseConfig} from '../dev-infra/release/config';
|
||||
|
||||
/** Configuration for the `ng-dev release` command. */
|
||||
@@ -29,9 +28,8 @@ export const release: ReleaseConfig = {
|
||||
const {buildTargetPackages} = require(join(__dirname, '../scripts/build/package-builder'));
|
||||
return buildTargetPackages('dist/release-output', false, 'Release', true);
|
||||
},
|
||||
// TODO: This can be removed once there is an org-wide tool for changelog generation.
|
||||
generateReleaseNotesForHead: async () => {
|
||||
exec('yarn -s gulp changelog', {cwd: join(__dirname, '../')});
|
||||
releaseNotes: {
|
||||
hiddenScopes: ['aio', 'dev-infra', 'docs-infra', 'zone.js'],
|
||||
},
|
||||
releasePrLabels: ['comp: build & ci', 'action: merge', 'PullApprove: disable'],
|
||||
};
|
||||
|
||||
+27
-3
@@ -335,6 +335,8 @@ groups:
|
||||
'aio/content/guide/component-styles.md',
|
||||
'aio/content/guide/view-encapsulation.md',
|
||||
'aio/content/examples/component-styles/**',
|
||||
'aio/content/examples/content-projection/**',
|
||||
'aio/content/guide/content-projection.md',
|
||||
'aio/content/guide/dependency-injection.md',
|
||||
'aio/content/examples/dependency-injection/**',
|
||||
'aio/content/images/guide/dependency-injection/**',
|
||||
@@ -444,7 +446,7 @@ groups:
|
||||
- *can-be-global-approved
|
||||
- *can-be-global-docs-approved
|
||||
- >
|
||||
contains_any_globs(files.exclude("packages/core/schematics/**"), [
|
||||
contains_any_globs(files.exclude("packages/core/schematics/**").exclude("packages/common/http/**"), [
|
||||
'packages/common/**',
|
||||
'packages/examples/common/**',
|
||||
])
|
||||
@@ -605,6 +607,8 @@ groups:
|
||||
'aio/content/guide/router.md',
|
||||
'aio/content/guide/router-tutorial.md',
|
||||
'aio/content/guide/router-tutorial-toh.md',
|
||||
'aio/content/guide/routing-overview.md',
|
||||
'aio/content/guide/router-reference.md',
|
||||
'aio/content/examples/router-tutorial/**',
|
||||
'aio/content/examples/router/**',
|
||||
'aio/content/images/guide/router/**'
|
||||
@@ -767,7 +771,6 @@ groups:
|
||||
required: 2 # require at least 2 approvals
|
||||
reviewed_for: required
|
||||
|
||||
|
||||
# =========================================================
|
||||
# Bazel
|
||||
# =========================================================
|
||||
@@ -998,6 +1001,7 @@ groups:
|
||||
'aio/content/guide/releases.md',
|
||||
'aio/content/guide/updating.md',
|
||||
'aio/content/guide/deprecations.md',
|
||||
'aio/content/guide/migration-legacy-message-id.md',
|
||||
'aio/content/guide/migration-renderer.md',
|
||||
'aio/content/guide/migration-undecorated-classes.md',
|
||||
'aio/content/guide/migration-dynamic-flag.md',
|
||||
@@ -1005,7 +1009,7 @@ groups:
|
||||
'aio/content/guide/migration-localize.md',
|
||||
'aio/content/guide/migration-module-with-providers.md',
|
||||
'aio/content/guide/static-query-migration.md',
|
||||
'aio/content/guide/updating-to-version-11.md',
|
||||
'aio/content/guide/updating-to-version-12.md',
|
||||
'aio/content/guide/ivy-compatibility.md',
|
||||
'aio/content/guide/ivy-compatibility-examples.md'
|
||||
])
|
||||
@@ -1014,6 +1018,23 @@ groups:
|
||||
- IgorMinar
|
||||
- jelbourn
|
||||
|
||||
# =========================================================
|
||||
# Docs: Angular DevTools
|
||||
# =========================================================
|
||||
docs-devtools:
|
||||
<<: *defaults
|
||||
conditions:
|
||||
- *can-be-global-approved
|
||||
- *can-be-global-docs-approved
|
||||
- >
|
||||
contains_any_globs(files, [
|
||||
'aio/content/guide/devtools.md',
|
||||
'aio/content/images/guide/devtools/**'
|
||||
])
|
||||
reviewers:
|
||||
users:
|
||||
- mgechev
|
||||
- twerske
|
||||
|
||||
# =========================================================
|
||||
# Tooling: Compiler API shared with Angular CLI
|
||||
@@ -1241,6 +1262,7 @@ groups:
|
||||
- jelbourn
|
||||
- petebacondarwin
|
||||
- jessicajaniuk
|
||||
- zarend
|
||||
# OOO as of 2020-09-28 - pkozlowski-opensource
|
||||
reviews:
|
||||
request: 4 # Request reviews from four people
|
||||
@@ -1270,6 +1292,7 @@ groups:
|
||||
- jelbourn
|
||||
- petebacondarwin
|
||||
- jessicajaniuk
|
||||
- zarend
|
||||
# OOO as of 2020-09-28 - pkozlowski-opensource
|
||||
reviews:
|
||||
request: 4 # Request reviews from four people
|
||||
@@ -1299,6 +1322,7 @@ groups:
|
||||
- jelbourn
|
||||
- petebacondarwin
|
||||
- jessicajaniuk
|
||||
- zarend
|
||||
# OOO as of 2020-09-28 - pkozlowski-opensource
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ filegroup(
|
||||
name = "web_test_bootstrap_scripts",
|
||||
# do not sort
|
||||
srcs = [
|
||||
"@npm//:node_modules/core-js/client/core.js",
|
||||
"@npm//:node_modules/core-js-bundle/index.js",
|
||||
"//packages/zone.js/bundles:zone.umd.js",
|
||||
"//packages/zone.js/bundles:zone-testing.umd.js",
|
||||
"//packages/zone.js/bundles:task-tracking.umd.js",
|
||||
|
||||
+334
-310
@@ -1,118 +1,194 @@
|
||||
## 11.2.10 (2021-04-14)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **compiler-cli:** prevent eliding default imports in incremental recompilations ([#41586](https://github.com/angular/angular/issues/41586)) ([43050a1](https://github.com/angular/angular/commit/43050a16de1dfcf8090461d9bc8d9804a98d3403)), closes [#41377](https://github.com/angular/angular/issues/41377)
|
||||
* **compiler-cli:** show a more specific error for Ivy NgModules ([#41534](https://github.com/angular/angular/issues/41534)) ([09eb125](https://github.com/angular/angular/commit/09eb1257d86061a26551d11efc042ba864b343d3))
|
||||
* **core:** error if DebugRenderer2.destroyNode is called twice in a row ([#41565](https://github.com/angular/angular/issues/41565)) ([419c189](https://github.com/angular/angular/commit/419c189ad3620cbe02e1927875ca7fa72a46627f))
|
||||
* **language-service:** bound attributes should not break directive matching ([#41597](https://github.com/angular/angular/issues/41597)) ([3dbcc7f](https://github.com/angular/angular/commit/3dbcc7f7a1f011f007c6b5abc2aff228bffba9b6)), closes [/github.com/angular/angular/blob/cdf1ea1951fb7187b1f6c9bb8a847c859c41e0b8/packages/compiler/src/render3/view/util.ts#L174-L206](https://github.com//github.com/angular/angular/blob/cdf1ea1951fb7187b1f6c9bb8a847c859c41e0b8/packages/compiler/src/render3/view/util.ts/issues/L174-L206)
|
||||
* **language-service:** resolve to the pre-compiled style when compiled css url is provided ([#41538](https://github.com/angular/angular/issues/41538)) ([3d54980](https://github.com/angular/angular/commit/3d549809c3c8659197f323fc78a9fb3756e9969e)), closes [angular/vscode-ng-language-service#1263](https://github.com/angular/vscode-ng-language-service/issues/1263)
|
||||
* **language-service:** use 'any' instead of failing for inline TCBs ([#41513](https://github.com/angular/angular/issues/41513)) ([f76873e](https://github.com/angular/angular/commit/f76873e4d5aefe9276873ee0270c331561329d9c)), closes [#41395](https://github.com/angular/angular/issues/41395)
|
||||
* **router:** handle new navigations from a NavigationEnd event ([#41262](https://github.com/angular/angular/issues/41262)) ([#41511](https://github.com/angular/angular/issues/41511)) ([e34299a](https://github.com/angular/angular/commit/e34299af256326366ef2176bd905d9a64158f2df)), closes [#37460](https://github.com/angular/angular/issues/37460)
|
||||
* **router:** Remove information about attached component when deactivating route ([#41381](https://github.com/angular/angular/issues/41381)) ([646f4a1](https://github.com/angular/angular/commit/646f4a1fe6057b0c70d61a20f3aecf28e71654da)), closes [#41379](https://github.com/angular/angular/issues/41379)
|
||||
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* **compiler-cli:** allow incremental compilation in the presence of redirected source files ([#41587](https://github.com/angular/angular/issues/41587)) ([616145e](https://github.com/angular/angular/commit/616145e1a7aa594a26345ac0af909ecbacbe7b70))
|
||||
|
||||
|
||||
# 12.0.0-next.8 (2021-04-07)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **common:** add `historyGo` method to `Location` service ([#38890](https://github.com/angular/angular/issues/38890)) ([e05a6f3](https://github.com/angular/angular/commit/e05a6f3bb3048e9a94a4b154526221dea290312d))
|
||||
* **compiler-cli:** support transforming component style resources ([#41307](https://github.com/angular/angular/issues/41307)) ([1de04b1](https://github.com/angular/angular/commit/1de04b124e1e92ea21a070c9d928664f193d220c))
|
||||
* **core:** support `forwardRef` in `providedIn` of `Injectable` declaration ([#41426](https://github.com/angular/angular/issues/41426)) ([f7c294e](https://github.com/angular/angular/commit/f7c294ee0f4131dae83d4b6a7fa4e497df84aa57)), closes [#41205](https://github.com/angular/angular/issues/41205)
|
||||
|
||||
|
||||
|
||||
## 11.2.9 (2021-04-07)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **bazel:** add missing dependency on `tslib` ([#41480](https://github.com/angular/angular/issues/41480)) ([8d005e5](https://github.com/angular/angular/commit/8d005e51322b68bb66ff311fc78fa34dd440b123)), closes [11.2.8/src/api-extractor/index.js#L20](https://github.com/11.2.8/src/api-extractor/index.js/issues/L20)
|
||||
* **compiler-cli:** Allow analysis to continue with invalid style url ([#41403](https://github.com/angular/angular/issues/41403)) ([#41489](https://github.com/angular/angular/issues/41489)) ([07131fa](https://github.com/angular/angular/commit/07131fa8ef9f9e6930cf297c27e450c15fb4f10b))
|
||||
* **compiler-cli:** fix extending angularCompilerOptions from non relative extension less TypeScript configuration files ([#41349](https://github.com/angular/angular/issues/41349)) ([e0165fd](https://github.com/angular/angular/commit/e0165fd7f8374694c1f9d74ecdea5af4f8bba4c7)), closes [#41343](https://github.com/angular/angular/issues/41343)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **bazel:** allow setting `compilationMode` in `ng_module` rule ([#41418](https://github.com/angular/angular/issues/41418)) ([e6da38a](https://github.com/angular/angular/commit/e6da38a5e017bbb2e52857472363b5ab2cd84281))
|
||||
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* **core:** add private hooks around user code executed by the runtime ([#41421](https://github.com/angular/angular/issues/41421)) ([94af9d9](https://github.com/angular/angular/commit/94af9d95bbde5d068e89d6697d87851dc246a88f))
|
||||
* **language-service:** add perf tracing to LanguageService ([#41401](https://github.com/angular/angular/issues/41401)) ([7b0a800](https://github.com/angular/angular/commit/7b0a800b69170c6d32cc49dbc8961b2e2821fe40))
|
||||
|
||||
|
||||
|
||||
# 12.0.0-next.7 (2021-04-01)
|
||||
<a name="12.0.1"></a>
|
||||
# 12.0.1 (2021-05-19)
|
||||
### benchpress
|
||||
| Commit | Description |
|
||||
| -- | -- |
|
||||
| 28ee9864a4 | fix(benchpress): update the check for start and end events (#42085) |
|
||||
### compiler
|
||||
| Commit | Description |
|
||||
| -- | -- |
|
||||
| 52c07e403e | fix(compiler): unclear lexer error when using private identifier in expressions (#42027) |
|
||||
### core
|
||||
| Commit | Description |
|
||||
| -- | -- |
|
||||
| 3a46ad96ea | fix(core): global listeners not being bound on non-node host elements (#42014) |
|
||||
### forms
|
||||
| Commit | Description |
|
||||
| -- | -- |
|
||||
| 9b90c03a9f | fix(forms): registerOnValidatorChange should be called for ngModelGroup. (#41971) |
|
||||
## Special Thanks:
|
||||
Alex Rickabaugh, Daniel Díaz, David Shevitz, Dylan Hunn, Front-end developer, George Kalpakas, Joey Perrott, Kristiyan Kostadinov, Lars Gyrup Brink Nielsen, MrJithil, Paul Gschwendtner, Renovate Bot, Sam Severance, Sumit Arora, iRealNirmal, iron, mgechev, rachid Oussanaa and wagnermaciel
|
||||
|
||||
|
||||
<a name="12.0.0"></a>
|
||||
# 12.0.0 (2021-05-12)
|
||||
|
||||
[Blog post "Angular v12 is now available"](https://blog.angular.io/angular-v12-is-now-available-32ed51fbfd49).
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **animations:** ensure consistent transition namespace ordering ([#19854](https://github.com/angular/angular/issues/19854)) ([01cc995](https://github.com/angular/angular/commit/01cc99589bc449eaf3b1de2c94636de878843fba))
|
||||
* **animations:** update supported range of node versions to only include LTS versions ([#41822](https://github.com/angular/angular/issues/41822)) ([e918250](https://github.com/angular/angular/commit/e918250a0624cff9bbbbdb016a069303a99fb8cc))
|
||||
* **animations:** cleanup DOM elements when the root view is removed ([#41059](https://github.com/angular/angular/issues/41059)) ([c49b280](https://github.com/angular/angular/commit/c49b28013a6c017c9afc73bbc00bb4fdcf15c70e))
|
||||
* **animations:** allow animations on elements in the shadow DOM ([#40134](https://github.com/angular/angular/issues/40134)) ([dad42c8](https://github.com/angular/angular/commit/dad42c8cd669357f9c862023abc5f4695863040d)), closes [#25672](https://github.com/angular/angular/issues/25672)
|
||||
* **animations:** cleanup DOM elements when the root view is removed ([#41001](https://github.com/angular/angular/issues/41001)) ([a31da48](https://github.com/angular/angular/commit/a31da4850788800ba9735d617e7e3bb621a79c93))
|
||||
* **bazel:** update supported range of node versions to only include LTS versions ([#41822](https://github.com/angular/angular/issues/41822)) ([8503246](https://github.com/angular/angular/commit/85032460f133162cc712ab3b9f04d42ff3b6d6d9))
|
||||
* **bazel:** update build tooling for latest changes in rules_nodejs ([#40710](https://github.com/angular/angular/issues/40710)) ([696f7bc](https://github.com/angular/angular/commit/696f7bc))
|
||||
* **bazel:** update integration test to use rules_nodejs@3.1.0 ([#40710](https://github.com/angular/angular/issues/40710)) ([34de89a](https://github.com/angular/angular/commit/34de89a))
|
||||
* **bazel:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([2c90391](https://github.com/angular/angular/commit/2c90391))
|
||||
* **benchpress:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([e721a5d](https://github.com/angular/angular/commit/e721a5d))
|
||||
* **common:** add right ContentType for boolean values with HttpClient request body([#38924](https://github.com/angular/angular/issues/38924)) ([#41885](https://github.com/angular/angular/issues/41885)) ([922a602](https://github.com/angular/angular/commit/922a60283183c47a268fd084302b2bc87267a73e))
|
||||
* **common:** update supported range of node versions to only include LTS versions ([#41822](https://github.com/angular/angular/issues/41822)) ([f2b6fd8](https://github.com/angular/angular/commit/f2b6fd87056cf3159e8ecc275ce654e47fdfa6f0))
|
||||
* **common:** viewport scroller not finding elements inside the shadow DOM ([#41644](https://github.com/angular/angular/issues/41644)) ([c0f5ba3](https://github.com/angular/angular/commit/c0f5ba3d36b2509a71d09c436d247211a58ee80d)), closes [#41470](https://github.com/angular/angular/issues/41470)
|
||||
* **common:** temporarily re-export and deprecate `XhrFactory` ([#41393](https://github.com/angular/angular/issues/41393)) ([7dfa446](https://github.com/angular/angular/commit/7dfa446c4ace99f4b64069cf672dcaa3665a1f5b))
|
||||
* **common:** cleanup location change listeners when the root view is removed ([#40867](https://github.com/angular/angular/issues/40867)) ([38524c4](https://github.com/angular/angular/commit/38524c4d29290d3339ad2d7335a0ea84f5701d26)), closes [#31546](https://github.com/angular/angular/issues/31546)
|
||||
* **common:** allow number or boolean as http params ([#40663](https://github.com/angular/angular/issues/40663)) ([91cdc11](https://github.com/angular/angular/commit/91cdc11aa0347d1b71f2f732e00af9c3ff8078fc)), closes [#23856](https://github.com/angular/angular/issues/23856)
|
||||
* **common:** avoid mutating context object in NgTemplateOutlet ([#40360](https://github.com/angular/angular/issues/40360)) ([d3705b3](https://github.com/angular/angular/commit/d3705b3284113f752ee05e9f0d2f6e75c723ea5b)), closes [#24515](https://github.com/angular/angular/issues/24515)
|
||||
* **compiler:** preserve @page rules in encapsulated styles ([#41915](https://github.com/angular/angular/issues/41915)) ([3e365ba](https://github.com/angular/angular/commit/3e365ba81e313ee31af7a8e9042e33fc046067e0)), closes [#26269](https://github.com/angular/angular/issues/26269)
|
||||
* **compiler:** strip scoped selectors from `@font-face` rules ([#41815](https://github.com/angular/angular/issues/41815)) ([2a11cda](https://github.com/angular/angular/commit/2a11cdab51a2d8d7f644ceca744568a1617f5242)), closes [#41751](https://github.com/angular/angular/issues/41751)
|
||||
* **compiler:** update supported range of node versions to only include LTS versions ([#41822](https://github.com/angular/angular/issues/41822)) ([bae8126](https://github.com/angular/angular/commit/bae81269c7461063821be7beb66b516e5a8995ce))
|
||||
* **compiler:** non-literal inline templates incorrectly processed in partial compilation ([#41583](https://github.com/angular/angular/issues/41583)) ([ab257b3](https://github.com/angular/angular/commit/ab257b370127dce70bd3ee7ad6d64d3a9ad5ae95))
|
||||
* **compiler:** not generating update instructions for ng-template inside alternate namespaces ([#41669](https://github.com/angular/angular/issues/41669)) ([2bcbbda](https://github.com/angular/angular/commit/2bcbbda78913be014534fde72318ab09795350f9)), closes [#41308](https://github.com/angular/angular/issues/41308)
|
||||
* **compiler:** avoid parsing EmptyExpr with a backwards span ([#41581](https://github.com/angular/angular/issues/41581)) ([e1a2930](https://github.com/angular/angular/commit/e1a29308933e99ee3e0d92aae42b33834f20f50a))
|
||||
* **compiler:** handle case-sensitive CSS custom properties ([#41380](https://github.com/angular/angular/issues/41380)) ([e112e32](https://github.com/angular/angular/commit/e112e320bf6c2b60e8ecea46f80bcaec593c65b7)), closes [#41364](https://github.com/angular/angular/issues/41364)
|
||||
* **compiler:** include used components during JIT compilation of partial component declaration ([#41353](https://github.com/angular/angular/issues/41353)) ([ff9470b](https://github.com/angular/angular/commit/ff9470b0a0196a3638f19028bba15e002cb0ff27)), closes [#41104](https://github.com/angular/angular/issues/41104) [#41318](https://github.com/angular/angular/issues/41318)
|
||||
* **language-service:** Only provide Angular property completions in templates ([#41278](https://github.com/angular/angular/issues/41278)) ([0226a11](https://github.com/angular/angular/commit/0226a11c185da2d1e6f7833972d3f12205a6ae59))
|
||||
* **platform-browser:** configure `XhrFactory` to use `BrowserXhr` ([#41313](https://github.com/angular/angular/issues/41313)) ([e0028e5](https://github.com/angular/angular/commit/e0028e57410281e190caa74e0986320f6591d27b)), closes [#41311](https://github.com/angular/angular/issues/41311)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **core:** add migration for `XhrFactory` import ([#41313](https://github.com/angular/angular/issues/41313)) ([95ff5ec](https://github.com/angular/angular/commit/95ff5ecb239d55a239113b0a2e1f7620f6e34676))
|
||||
* **language-service:** add perf tracing to LanguageService ([#41319](https://github.com/angular/angular/issues/41319)) ([90f85da](https://github.com/angular/angular/commit/90f85da2de72f320653e6292968f70c87876bada))
|
||||
|
||||
|
||||
### BREAKING CHANGES
|
||||
|
||||
* **platform-browser:** `XhrFactory` has been moved from `@angular/common/http` to `@angular/common`.
|
||||
|
||||
**Before**
|
||||
```ts
|
||||
import {XhrFactory} from '@angular/common/http';
|
||||
```
|
||||
|
||||
**After**
|
||||
```ts
|
||||
import {XhrFactory} from '@angular/common';
|
||||
```
|
||||
|
||||
|
||||
|
||||
## 11.2.8 (2021-04-01)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **compiler:** handle case-sensitive CSS custom properties ([#41380](https://github.com/angular/angular/issues/41380)) ([f9da272](https://github.com/angular/angular/commit/f9da27214b74d60d398cf46493767711e710635c)), closes [#41364](https://github.com/angular/angular/issues/41364)
|
||||
|
||||
|
||||
|
||||
# 12.0.0-next.6 (2021-03-24)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **animations:** cleanup DOM elements when the root view is removed ([#41059](https://github.com/angular/angular/issues/41059)) ([c49b280](https://github.com/angular/angular/commit/c49b28013a6c017c9afc73bbc00bb4fdcf15c70e))
|
||||
* **compiler:** support multiple `:host-context()` selectors ([#40494](https://github.com/angular/angular/issues/40494)) ([07b7af3](https://github.com/angular/angular/commit/07b7af3)), closes [#19199](https://github.com/angular/angular/issues/19199)
|
||||
* **compiler:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([f728490](https://github.com/angular/angular/commit/f728490))
|
||||
* **compiler-cli:** use '' for the source map URL of indirect templates ([#41973](https://github.com/angular/angular/issues/41973)) ([7a4d980](https://github.com/angular/angular/commit/7a4d9805ea73d1b6a7659987da77d266d5e01b88)), closes [#40854](https://github.com/angular/angular/issues/40854)
|
||||
* **compiler-cli:** expose the linker as a Babel plugin ([#41918](https://github.com/angular/angular/issues/41918)) ([8fdac8f](https://github.com/angular/angular/commit/8fdac8f4361fd4ac0f20c21c98289c19e8864347))
|
||||
* **compiler-cli:** prefer non-aliased exports in reference emitters ([#41866](https://github.com/angular/angular/issues/41866)) ([75bb931](https://github.com/angular/angular/commit/75bb931889b946c243161a6ce0503bc7d08a6565)), closes [#41443](https://github.com/angular/angular/issues/41443) [#41277](https://github.com/angular/angular/issues/41277)
|
||||
* **compiler-cli:** allow linker to process minified booleans ([#41747](https://github.com/angular/angular/issues/41747)) ([1fb6724](https://github.com/angular/angular/commit/1fb6724b1f66c4681ddb201bc9b5441d20f5b920)), closes [#41655](https://github.com/angular/angular/issues/41655)
|
||||
* **compiler-cli:** match string indexed partial declarations ([#41747](https://github.com/angular/angular/issues/41747)) ([f885750](https://github.com/angular/angular/commit/f8857507642f5d12eebf4ef1ca68b63cc51f4f81)), closes [#41655](https://github.com/angular/angular/issues/41655)
|
||||
* **compiler-cli:** update supported range of node versions to only include LTS versions ([#41822](https://github.com/angular/angular/issues/41822)) ([5b463f4](https://github.com/angular/angular/commit/5b463f4541946c795835c9d9cfd7a21e7b0caffc))
|
||||
* **compiler-cli:** autocomplete literal types in templates. ([#41456](https://github.com/angular/angular/issues/41456)) ([#41645](https://github.com/angular/angular/issues/41645)) ([8b2b5ef](https://github.com/angular/angular/commit/8b2b5ef903a21b599dfc4bfe8b0c64f7c136c3a9))
|
||||
* **compiler-cli:** do not error with prepocessing if component has no inline styles ([#41602](https://github.com/angular/angular/issues/41602)) ([a5fe8b9](https://github.com/angular/angular/commit/a5fe8b95893798467c4eea2b3d38d49f6d0ce1b3))
|
||||
* **compiler-cli:** ensure the compiler tracks `ts.Program`s correctly ([#41291](https://github.com/angular/angular/issues/41291)) ([deacc74](https://github.com/angular/angular/commit/deacc741e0ee41666292d2e2c07812a78daf5d6f))
|
||||
* **compiler-cli:** prevent eliding default imports in incremental recompilations ([#41557](https://github.com/angular/angular/issues/41557)) ([7f16515](https://github.com/angular/angular/commit/7f1651574ee95eaaa5f636fc37be7b07d1a808e5)), closes [#41377](https://github.com/angular/angular/issues/41377)
|
||||
* **compiler-cli:** resolve `rootDirs` to absolute ([#41359](https://github.com/angular/angular/issues/41359)) ([3e0fda9](https://github.com/angular/angular/commit/3e0fda96b827e577cc300f46e8497cb6c810ad61)), closes [#36290](https://github.com/angular/angular/issues/36290)
|
||||
* **compiler-cli:** add `useInlining` option to type check config ([#41043](https://github.com/angular/angular/issues/41043)) ([09aefd2](https://github.com/angular/angular/commit/09aefd29045db77689f4dc16a6abae09a79cfb81)), closes [#40963](https://github.com/angular/angular/issues/40963)
|
||||
* **compiler-cli:** `readConfiguration` existing options should override options in tsconfig ([#40694](https://github.com/angular/angular/issues/40694)) ([b7c4d07](https://github.com/angular/angular/commit/b7c4d07e81277f7aed566e443d1d4e1395c5a2f4))
|
||||
* **compiler-cli:** extend `angularCompilerOptions` in tsconfig from node ([#40694](https://github.com/angular/angular/issues/40694)) ([5eb1954](https://github.com/angular/angular/commit/5eb195416bf73f2fa59de52531724d8d19392975)), closes [#36715](https://github.com/angular/angular/issues/36715)
|
||||
* **compiler-cli:** update ngcc integration tests for latest changes in rules_nodejs ([#40710](https://github.com/angular/angular/issues/40710)) ([d7f5755](https://github.com/angular/angular/commit/d7f5755))
|
||||
* **compiler-cli:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([b75d7cb](https://github.com/angular/angular/commit/b75d7cb))
|
||||
* **core:** do not retain dynamically compiled components and modules ([#42003](https://github.com/angular/angular/issues/42003)) ([1449c5c](https://github.com/angular/angular/commit/1449c5c8ff3bf706c501130fe261627effe5d212)), closes [#19997](https://github.com/angular/angular/issues/19997)
|
||||
* **core:** invoke profiler around ngOnDestroy lifecycle hooks ([#41969](https://github.com/angular/angular/issues/41969)) ([e9ddc57](https://github.com/angular/angular/commit/e9ddc57f948f0cb18e3e334aeb3084d1b49689b1))
|
||||
* **core:** AsyncPipe now compatible with RxJS 7 ([#41590](https://github.com/angular/angular/issues/41590)) ([9759bca](https://github.com/angular/angular/commit/9759bca339b44ed78ec6aafab0336d531d285f90))
|
||||
* **core:** handle multiple i18n attributes with expression bindings ([#41882](https://github.com/angular/angular/issues/41882)) ([73c6c64](https://github.com/angular/angular/commit/73c6c64f82d45c34203d4d18d759ad0c33a6b221)), closes [#41869](https://github.com/angular/angular/issues/41869)
|
||||
* **core:** update supported range of node versions to only include LTS versions ([#41822](https://github.com/angular/angular/issues/41822)) ([f9c1f08](https://github.com/angular/angular/commit/f9c1f089573e0158eb5e4443658cfd25aeeeb091))
|
||||
* **core:** detect synthesized constructors that have been downleveled using TS 4.2 ([#41305](https://github.com/angular/angular/issues/41305)) ([274dc15](https://github.com/angular/angular/commit/274dc15452739e4fab2f647804a64d5b797cfed5)), closes [#41298](https://github.com/angular/angular/issues/41298)
|
||||
* **core:** Switch `emitDistinctChangesOnlyDefaultValue` to true ([#41121](https://github.com/angular/angular/issues/41121)) ([7096246](https://github.com/angular/angular/commit/70962465b5795f0a192f745016b1c461e7c8790b))
|
||||
* **core:** remove duplicated EMPTY_OBJ constant ([#41066](https://github.com/angular/angular/issues/41066)) ([bf158e7](https://github.com/angular/angular/commit/bf158e7ff0715aabeae3c2c1ac923bf8cc7e4cfd))
|
||||
* **core:** remove duplicated EMPTY_ARRAY constant ([#40991](https://github.com/angular/angular/issues/40991)) ([e12d9de](https://github.com/angular/angular/commit/e12d9dec64bc3d02e58f8f85a65a939394fb9531))
|
||||
* **core:** allow EmbeddedViewRef context to be updated ([#40360](https://github.com/angular/angular/issues/40360)) ([a3e1719](https://github.com/angular/angular/commit/a3e17190e7e7e0329ed3643299c24d5fd510b7d6)), closes [#24515](https://github.com/angular/angular/issues/24515)
|
||||
* **core:** make DefaultIterableDiffer keep the order of duplicates ([#23941](https://github.com/angular/angular/issues/23941)) ([a826926](https://github.com/angular/angular/commit/a826926)), closes [#23815](https://github.com/angular/angular/issues/23815)
|
||||
* **core:** NgZone coaleascing options should trigger onStable correctly ([#40540](https://github.com/angular/angular/issues/40540)) ([22f9e45](https://github.com/angular/angular/commit/22f9e45))
|
||||
* **elements:** update supported range of node versions to only include LTS versions ([#41822](https://github.com/angular/angular/issues/41822)) ([4f5d094](https://github.com/angular/angular/commit/4f5d094f3a385cdc6d93c7676457484e3d8b6b09))
|
||||
* **elements:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([efd4149](https://github.com/angular/angular/commit/efd4149))
|
||||
* **forms:** update supported range of node versions to only include LTS versions ([#41822](https://github.com/angular/angular/issues/41822)) ([dc975ba](https://github.com/angular/angular/commit/dc975bac93a8087d1f31a31db60ef313147e589f))
|
||||
* **http:** complete the request on timeout ([#39807](https://github.com/angular/angular/issues/39807)) ([61a0b6d](https://github.com/angular/angular/commit/61a0b6d)), closes [#26453](https://github.com/angular/angular/issues/26453)
|
||||
* **http:** emit error on XMLHttpRequest abort event ([#40767](https://github.com/angular/angular/issues/40767)) ([3897265](https://github.com/angular/angular/commit/3897265)), closes [#22324](https://github.com/angular/angular/issues/22324)
|
||||
* **language-service:** update supported range of node versions to only include LTS versions ([#41822](https://github.com/angular/angular/issues/41822)) ([9b6198c](https://github.com/angular/angular/commit/9b6198c16f122dd934ac6a66d2ada21df26839b5))
|
||||
* **language-service:** use script versions for incremental compilations ([#41475](https://github.com/angular/angular/issues/41475)) ([78236bf](https://github.com/angular/angular/commit/78236bfdcaeb66c5846eb0435d727942bb88f7c5))
|
||||
* **language-service:** Only provide Angular property completions in templates ([#41278](https://github.com/angular/angular/issues/41278)) ([0226a11](https://github.com/angular/angular/commit/0226a11c185da2d1e6f7833972d3f12205a6ae59))
|
||||
* **language-service:** Add plugin option to force strictTemplates ([#41062](https://github.com/angular/angular/issues/41062)) ([e9e7c33](https://github.com/angular/angular/commit/e9e7c33f3c170648ec8c86d859980c7fe78fba39))
|
||||
* **language-service:** use single entry point for Ivy and View Engine ([#40967](https://github.com/angular/angular/issues/40967)) ([e986a97](https://github.com/angular/angular/commit/e986a9787b7787c3cffef69d06a2e7e1228e3f40))
|
||||
* **localize:** relax error to warning for missing target ([#41944](https://github.com/angular/angular/issues/41944)) ([35ceed2](https://github.com/angular/angular/commit/35ceed2061a890a70576dc7afa0b779f3779ae7b)), closes [#21690](https://github.com/angular/angular/issues/21690)
|
||||
* **localize:** update supported range of node versions to only include LTS versions ([#41822](https://github.com/angular/angular/issues/41822)) ([658ed1f](https://github.com/angular/angular/commit/658ed1f904ef0013c3b08e2b2182cf246ef55b2b))
|
||||
* **localize:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([4b469c9](https://github.com/angular/angular/commit/4b469c9))
|
||||
* **ngcc:** detect synthesized constructors that have been downleveled using TS 4.2 ([#41305](https://github.com/angular/angular/issues/41305)) ([8d3da56](https://github.com/angular/angular/commit/8d3da56eda12070df1fb473c8609f3a94d77bfd6)), closes [#41298](https://github.com/angular/angular/issues/41298)
|
||||
* **platform-browser:** prevent memory leak of style nodes if shadow DOM encapsulation is used ([#42005](https://github.com/angular/angular/issues/42005)) ([d555555](https://github.com/angular/angular/commit/d5555558d00774520dbda40d48721bda2cb9dd1a)), closes [#36655](https://github.com/angular/angular/issues/36655)
|
||||
* **platform-browser:** update supported range of node versions to only include LTS versions ([#41822](https://github.com/angular/angular/issues/41822)) ([ea05cfd](https://github.com/angular/angular/commit/ea05cfd0c5a99840f4522b604c33a5b2f7f25f7d))
|
||||
* **platform-browser:** configure `XhrFactory` to use `BrowserXhr` ([#41313](https://github.com/angular/angular/issues/41313)) ([e0028e5](https://github.com/angular/angular/commit/e0028e57410281e190caa74e0986320f6591d27b)), closes [#41311](https://github.com/angular/angular/issues/41311)
|
||||
* **platform-browser:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([7ecfd2d](https://github.com/angular/angular/commit/7ecfd2d))
|
||||
* **platform-browser-dynamic:** update supported range of node versions to only include LTS versions ([#41822](https://github.com/angular/angular/issues/41822)) ([bc45029](https://github.com/angular/angular/commit/bc45029a5437bcea45fa00549241685a1a3f32d0))
|
||||
* **platform-server:** update supported range of node versions to only include LTS versions ([#41822](https://github.com/angular/angular/issues/41822)) ([4b9d4fa](https://github.com/angular/angular/commit/4b9d4fa3e729a3af13fb5b50de3e5c73c1d6923f))
|
||||
* **router:** update supported range of node versions to only include LTS versions ([#41822](https://github.com/angular/angular/issues/41822)) ([0067edd](https://github.com/angular/angular/commit/0067edd1469a428c11bbe6358fd5650e79abf774))
|
||||
* **router:** Only retrieve stored route when reuse strategy indicates it should reattach ([#30263](https://github.com/angular/angular/issues/30263)) ([a4ff071](https://github.com/angular/angular/commit/a4ff071e3f08e3de6d4d3f97c747c2f42b827c49)), closes [#23162](https://github.com/angular/angular/issues/23162)
|
||||
* **router:** recursively merge empty path matches ([#41584](https://github.com/angular/angular/issues/41584)) ([1179dc8](https://github.com/angular/angular/commit/1179dc8cb32c9fc451d2af9215c4740af9d2e291)), closes [#41481](https://github.com/angular/angular/issues/41481)
|
||||
* **router:** fragment can be null ([#37336](https://github.com/angular/angular/issues/37336)) ([b555160](https://github.com/angular/angular/commit/b5551609fe02787641bdfdb0a6edfded413a3b52)), closes [#23894](https://github.com/angular/angular/issues/23894) [#34197](https://github.com/angular/angular/issues/34197)
|
||||
* **router:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([350dada](https://github.com/angular/angular/commit/350dada))
|
||||
* **service-worker:** update supported range of node versions to only include LTS versions ([#41822](https://github.com/angular/angular/issues/41822)) ([6b823d7](https://github.com/angular/angular/commit/6b823d7071d59234ab52bdf7eaa248df6b7d9faa))
|
||||
* **service-worker:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([4f7ff96](https://github.com/angular/angular/commit/4f7ff96))
|
||||
* **upgrade:** preserve $interval.flush when ngMocks is being used ([#30229](https://github.com/angular/angular/issues/30229)) ([87dc851](https://github.com/angular/angular/commit/87dc8511ccb9c75d78866ebd2c250ea96fc91bd0))
|
||||
* **upgrade:** update supported range of node versions to only include LTS versions ([#41822](https://github.com/angular/angular/issues/41822)) ([10c4523](https://github.com/angular/angular/commit/10c45239a68e82ea52c1601fae09953aa7843351))
|
||||
|
||||
|
||||
### Build System
|
||||
|
||||
* `ng_package` no longer generate minified UMDs ([#41425](https://github.com/angular/angular/issues/41425)) ([5a8bc1b](https://github.com/angular/angular/commit/5a8bc1bfe1c809705dfaa7e4723dd055308cd468))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **animations:** update supported range of node versions ([#41544](https://github.com/angular/angular/issues/41544)) ([547363a](https://github.com/angular/angular/commit/547363a851567f66e9aee6c80f9e98c739889969))
|
||||
* **animations:** add support for disabling animations through BrowserAnimationsModule.withConfig ([#40731](https://github.com/angular/angular/issues/40731)) ([29d8a0a](https://github.com/angular/angular/commit/29d8a0ab09a13600405343037079d151c3a04095))
|
||||
* **bazel:** update supported range of node versions ([#41544](https://github.com/angular/angular/issues/41544)) ([d583d92](https://github.com/angular/angular/commit/d583d926db537cc74f9235cad51189dbe83fbb44))
|
||||
* **common:** update supported range of node versions ([#41544](https://github.com/angular/angular/issues/41544)) ([e0250e5](https://github.com/angular/angular/commit/e0250e567ae47ed7b77e9d88a3289727c056a6f1))
|
||||
* **common:** add `historyGo` method to `Location` service ([#38890](https://github.com/angular/angular/issues/38890)) ([e05a6f3](https://github.com/angular/angular/commit/e05a6f3bb3048e9a94a4b154526221dea290312d))
|
||||
* **common:** support ICU standard "stand alone day of week" with `DatePipe` ([#40766](https://github.com/angular/angular/issues/40766)) ([c56ecab](https://github.com/angular/angular/commit/c56ecab515c28d2ad45c630080bfbf549675528a)), closes [#26922](https://github.com/angular/angular/issues/26922)
|
||||
* **common:** implement `appendAll()` method on `HttpParams` ([#20930](https://github.com/angular/angular/issues/20930)) ([575a2d1](https://github.com/angular/angular/commit/575a2d1)), closes [#20798](https://github.com/angular/angular/issues/20798)
|
||||
* **compiler:** support nullish coalescing in templates ([#41437](https://github.com/angular/angular/issues/41437)) ([ec27bd4](https://github.com/angular/angular/commit/ec27bd4ed1cc086d76d8142fadf87354b38aa61a)), closes [#36528](https://github.com/angular/angular/issues/36528)
|
||||
* **compiler:** update supported range of node versions ([#41544](https://github.com/angular/angular/issues/41544)) ([75cc813](https://github.com/angular/angular/commit/75cc8133ad8efd6453694f222e2cc6789c4de7b2))
|
||||
* **compiler:** emit @__PURE__ or [@pure](https://github.com/pure)OrBreakMyCode annotations in the generated code ([#41096](https://github.com/angular/angular/issues/41096)) ([9c21028](https://github.com/angular/angular/commit/9c210281d4073289ff4633a866e395ca34e97ef9))
|
||||
* **compiler-cli:** mark ability to use partial compilation mode as stable ([#41518](https://github.com/angular/angular/issues/41518)) ([6ba67c6](https://github.com/angular/angular/commit/6ba67c6fff52d5da443f36fa1bfe1cc1f0919c51)), closes [#41496](https://github.com/angular/angular/issues/41496)
|
||||
* **compiler-cli:** update supported range of node versions ([#41544](https://github.com/angular/angular/issues/41544)) ([b7bd238](https://github.com/angular/angular/commit/b7bd23817ed81c7359c0559e825ca385975fcafd))
|
||||
* **compiler-cli:** support transforming component style resources ([#41307](https://github.com/angular/angular/issues/41307)) ([1de04b1](https://github.com/angular/angular/commit/1de04b124e1e92ea21a070c9d928664f193d220c))
|
||||
* **compiler-cli:** support producing Closure-specific PURE annotations ([#41021](https://github.com/angular/angular/issues/41021)) ([fbc9df1](https://github.com/angular/angular/commit/fbc9df181ea50527cb755382b54b8b45d0f9ef39))
|
||||
* **core:** introduce getDirectiveMetadata global debugging utility ([#41525](https://github.com/angular/angular/issues/41525)) ([a07f303](https://github.com/angular/angular/commit/a07f30370848ecd051649a4862de39cf5bc2b541))
|
||||
* **core:** update supported range of node versions ([#41544](https://github.com/angular/angular/issues/41544)) ([e66a5fb](https://github.com/angular/angular/commit/e66a5fbca687464421bf5e892ba16aa31448c2b9))
|
||||
* **core:** support `forwardRef` in `providedIn` of `Injectable` declaration ([#41426](https://github.com/angular/angular/issues/41426)) ([f7c294e](https://github.com/angular/angular/commit/f7c294ee0f4131dae83d4b6a7fa4e497df84aa57)), closes [#41205](https://github.com/angular/angular/issues/41205)
|
||||
* **core:** add migration for `XhrFactory` import ([#41313](https://github.com/angular/angular/issues/41313)) ([95ff5ec](https://github.com/angular/angular/commit/95ff5ecb239d55a239113b0a2e1f7620f6e34676))
|
||||
* **core:** drop support for TypeScript 4.0 and 4.1 ([#41158](https://github.com/angular/angular/issues/41158)) ([fa04894](https://github.com/angular/angular/commit/fa048948be75c30dafebda69efbeb81776460500))
|
||||
* **core:** support TypeScript 4.2 ([#41158](https://github.com/angular/angular/issues/41158)) ([59ef409](https://github.com/angular/angular/commit/59ef40988e94f3173134368bc7d4e2726cdd8455))
|
||||
* **core:** manually annotate de-sugarred core tree-shakable providers with [@pure](https://github.com/pure)OrBreakMyCode ([#41096](https://github.com/angular/angular/issues/41096)) ([03d47d5](https://github.com/angular/angular/commit/03d47d570167a5a70b17552ca2c8d531683d900f))
|
||||
* **core:** more precise type for `APP_INITIALIZER` token ([#40986](https://github.com/angular/angular/issues/40986)) ([ca721c2](https://github.com/angular/angular/commit/ca721c2972f44d903a0e12fae3397ab62769e649)), closes [#40729](https://github.com/angular/angular/issues/40729)
|
||||
* **core:** drop support for zone.js 0.10.x ([#40823](https://github.com/angular/angular/issues/40823)) ([aaf9b31](https://github.com/angular/angular/commit/aaf9b31fb472826c279a720cc875007987f9aa6f)), closes [angular/angular-cli#20034](https://github.com/angular/angular-cli/issues/20034)
|
||||
* **core:** support APP_INITIALIZER work with observable ([#33222](https://github.com/angular/angular/issues/33222)) ([ca17ac5](https://github.com/angular/angular/commit/ca17ac523cc2ed8046931c86a2c12d97fb6796ca)), closes [#15088](https://github.com/angular/angular/issues/15088)
|
||||
* **elements:** update supported range of node versions ([#41544](https://github.com/angular/angular/issues/41544)) ([12fc08b](https://github.com/angular/angular/commit/12fc08bf9c07f14fce1790e751bd3f6779ed55dd))
|
||||
* **forms:** update supported range of node versions ([#41544](https://github.com/angular/angular/issues/41544)) ([a0006a6](https://github.com/angular/angular/commit/a0006a6bfb78e09d355baca63065958458b5d8cd))
|
||||
* **forms:** add `emitEvent` option for AbstractControl-based class methods ([#31031](https://github.com/angular/angular/issues/31031)) ([4ec045e](https://github.com/angular/angular/commit/4ec045e12b7614b901d4ef643988b86f09dfeee5)), closes [#29662](https://github.com/angular/angular/issues/29662)
|
||||
* **forms:** introduce min and max validators ([#39063](https://github.com/angular/angular/issues/39063)) ([8fb83ea](https://github.com/angular/angular/commit/8fb83ea)), closes [#16352](https://github.com/angular/angular/issues/16352)
|
||||
* **http:** introduce HttpContext request context ([#25751](https://github.com/angular/angular/issues/25751)) ([1644d64](https://github.com/angular/angular/commit/1644d64398491d4a324a5eee492d1fd37df52a01))
|
||||
* **http:** expose a list of human-readable http status codes ([#23548](https://github.com/angular/angular/issues/23548)) ([6fe3a1d](https://github.com/angular/angular/commit/6fe3a1d)), closes [#23543](https://github.com/angular/angular/issues/23543)
|
||||
* **language-service:** implement signature help ([#41581](https://github.com/angular/angular/issues/41581)) ([c7f9516](https://github.com/angular/angular/commit/c7f9516ab920baee755d61ce0deea502e88a58ba))
|
||||
* **language-service:** update supported range of node versions ([#41544](https://github.com/angular/angular/issues/41544)) ([86621be](https://github.com/angular/angular/commit/86621bec580f3234c39169606ef9853e7bca1f4b))
|
||||
* **language-service:** add perf tracing to LanguageService ([#41319](https://github.com/angular/angular/issues/41319)) ([90f85da](https://github.com/angular/angular/commit/90f85da2de72f320653e6292968f70c87876bada))
|
||||
* **language-service:** add command for getting components for a template file ([#40655](https://github.com/angular/angular/issues/40655)) ([5cde4ad](https://github.com/angular/angular/commit/5cde4ad))
|
||||
* **language-service:** Add diagnostics to suggest turning on strict mode ([#40423](https://github.com/angular/angular/issues/40423)) ([ecae75f](https://github.com/angular/angular/commit/ecae75f))
|
||||
* **language-service:** Implement `getRenameInfo` ([#40439](https://github.com/angular/angular/issues/40439)) ([4e8198d](https://github.com/angular/angular/commit/4e8198d))
|
||||
* **language-service:** initial implementation for `findRenameLocations` ([#40140](https://github.com/angular/angular/issues/40140)) ([9a5ac47](https://github.com/angular/angular/commit/9a5ac47))
|
||||
* **language-service:** view template typecheck block ([#39974](https://github.com/angular/angular/issues/39974)) ([d482f5c](https://github.com/angular/angular/commit/d482f5c))
|
||||
* **localize:** update supported range of node versions ([#41544](https://github.com/angular/angular/issues/41544)) ([590d4dd](https://github.com/angular/angular/commit/590d4dd5789788a8bd073d495df13e27725c4488))
|
||||
* **localize:** add scripts to migrate away from legacy message IDs ([#41026](https://github.com/angular/angular/issues/41026)) ([1735430](https://github.com/angular/angular/commit/17354304768f3c2b272c4c5d5636b5709287276f))
|
||||
* **ngcc:** support `__read` helper as used by TypeScript 4.2 ([#41201](https://github.com/angular/angular/issues/41201)) ([66e9970](https://github.com/angular/angular/commit/66e997069102a12c607d830c7edf91cb202e5902))
|
||||
* **ngcc:** support `__spreadArray` helper as used by TypeScript 4.2 ([#41201](https://github.com/angular/angular/issues/41201)) ([7b1214e](https://github.com/angular/angular/commit/7b1214eca2dd2f09e723a46bed857fcb7d40bc0b)) [#40394](https://github.com/angular/angular/issues/40394)
|
||||
* **platform-browser:** update supported range of node versions ([#41544](https://github.com/angular/angular/issues/41544)) ([ef0d1c3](https://github.com/angular/angular/commit/ef0d1c354534f027837f95860955abd81f6c2bd7))
|
||||
* **platform-browser-dynamic:** update supported range of node versions ([#41544](https://github.com/angular/angular/issues/41544)) ([b714f7b](https://github.com/angular/angular/commit/b714f7b93137ab9a064d5d93e4986025c08447db))
|
||||
* **platform-server:** update supported range of node versions ([#41544](https://github.com/angular/angular/issues/41544)) ([c901b4d](https://github.com/angular/angular/commit/c901b4d11f9892b98d5df82d6f9cc0da54ae847f))
|
||||
* **platform-server:** allow shimming the global env sooner ([#40559](https://github.com/angular/angular/issues/40559)) ([43ecf8a](https://github.com/angular/angular/commit/43ecf8a77bc7e92d3c635b450de904732e938e64)), closes [#24551](https://github.com/angular/angular/issues/24551) [#39950](https://github.com/angular/angular/issues/39950) [#39950](https://github.com/angular/angular/issues/39950)
|
||||
* **router:** update supported range of node versions ([#41544](https://github.com/angular/angular/issues/41544)) ([c30b171](https://github.com/angular/angular/commit/c30b171d20474d29323beb7cc99dc69c22d0f7fd))
|
||||
* **router:** add migration for ActivatedRouteSnapshot.fragment ([#41092](https://github.com/angular/angular/issues/41092)) ([190fa07](https://github.com/angular/angular/commit/190fa07b9a416defb581d2bf76d1deef7baefce6)), closes [#37336](https://github.com/angular/angular/issues/37336)
|
||||
* **router:** Add more fine-tuned control in `routerLinkActiveOptions` ([#40303](https://github.com/angular/angular/issues/40303)) ([6c05c80](https://github.com/angular/angular/commit/6c05c80f19bc84189cc1d2f2e029f6f13d60dc18)), closes [#13205](https://github.com/angular/angular/issues/13205)
|
||||
* **router:** Allow for custom router outlet implementations ([#40827](https://github.com/angular/angular/issues/40827)) ([a82fddf](https://github.com/angular/angular/commit/a82fddf1ce6166e0f697e429370eade114094670))
|
||||
* **service-worker:** update supported range of node versions ([#41544](https://github.com/angular/angular/issues/41544)) ([fc597f1](https://github.com/angular/angular/commit/fc597f1db5d1774278803c24ecdd2bca387bf69b))
|
||||
* **upgrade:** update supported range of node versions ([#41544](https://github.com/angular/angular/issues/41544)) ([beafa22](https://github.com/angular/angular/commit/beafa22de9aceadf0e6ba63d0124a2dab66ae6dd))
|
||||
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* **common:** remove unused methods from DomAdapter ([#41102](https://github.com/angular/angular/issues/41102)) ([3c66b10](https://github.com/angular/angular/commit/3c66b100dd6f05f53740f596c5eadb999c27c9c4))
|
||||
* **compiler:** reduce amount of generated code for safe accesses and nullish coalescing ([#41563](https://github.com/angular/angular/issues/41563)) ([9a3b82f](https://github.com/angular/angular/commit/9a3b82f19d26819c95c340d702c1c32787f2931e)), closes [#41437](https://github.com/angular/angular/issues/41437) [#41491](https://github.com/angular/angular/issues/41491)
|
||||
* **compiler-cli:** allow incremental compilation in the presence of redirected source files ([#41448](https://github.com/angular/angular/issues/41448)) ([ffea31f](https://github.com/angular/angular/commit/ffea31f433c1f71b78a2245d52d2969503db1784))
|
||||
* **compiler-cli:** cache results of `absoluteFromSourceFile` ([#41475](https://github.com/angular/angular/issues/41475)) ([fab1a64](https://github.com/angular/angular/commit/fab1a6468e53ab6c59e2c3aebb3ed1ecd1a6e5e8))
|
||||
* **core:** minor improvements to listener instructions ([#41807](https://github.com/angular/angular/issues/41807)) ([9346d61](https://github.com/angular/angular/commit/9346d61d92c722175ca7673efe475e838546fef7))
|
||||
* **core:** avoid storing LView in __ngContext__ ([#41358](https://github.com/angular/angular/issues/41358)) ([990067a](https://github.com/angular/angular/commit/990067a0c6df8e97c5bbffec00a76f13c4d4c903)), closes [#41047](https://github.com/angular/angular/issues/41047)
|
||||
* **core:** optimize getDirectives ([#41525](https://github.com/angular/angular/issues/41525)) ([f7e391a](https://github.com/angular/angular/commit/f7e391a912153d1ce43f9d0cf06d23121d1d49cd))
|
||||
|
||||
|
||||
### BREAKING CHANGES
|
||||
|
||||
* Minified UMD bundles are no longer included in the distributed NPM packages.
|
||||
* **animations:** DOM elements are now correctly removed when the root view is removed.
|
||||
If you are using SSR and use the app's HTML for rendering, you will need
|
||||
to ensure that you save the HTML to a variable before destorying the
|
||||
@@ -121,47 +197,24 @@ It is also possible that tests could be accidentally relying on the old behavior
|
||||
trying to find an element that was not removed in a previous test. If
|
||||
this is the case, the failing tests should be updated to ensure they
|
||||
have proper setup code which initializes elements they rely on.
|
||||
* **router:** Strict null checks will report on fragment potentially being null.
|
||||
Migration path: add null check.
|
||||
|
||||
|
||||
|
||||
## 11.2.7 (2021-03-24)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **compiler:** correctly process multiple rules containing `:host` selectors ([#41261](https://github.com/angular/angular/issues/41261)) ([f358d6b](https://github.com/angular/angular/commit/f358d6b113e1a8215fcb50dbc3c5db8799699901)), closes [#41237](https://github.com/angular/angular/issues/41237)
|
||||
* **compiler-cli:** add `useInlining` option to type check config ([#41268](https://github.com/angular/angular/issues/41268)) ([57644e9](https://github.com/angular/angular/commit/57644e95aadbfe9c8f336be77a22f7a5e1859758)), closes [#40963](https://github.com/angular/angular/issues/40963)
|
||||
* **core:** remove obsolete check for [class] and [className] presence ([#41254](https://github.com/angular/angular/issues/41254)) ([8a53b54](https://github.com/angular/angular/commit/8a53b5454eea7b4db09498d9018687aa0b0ca7f3))
|
||||
* **language-service:** show suggestion when type inference is suboptimal ([#41072](https://github.com/angular/angular/issues/41072)) ([18cd7a0](https://github.com/angular/angular/commit/18cd7a0c6921983556fe1fffbff93d42ae138007)), closes [angular/vscode-ng-language-service#1155](https://github.com/angular/vscode-ng-language-service/issues/1155) [#41042](https://github.com/angular/angular/issues/41042)
|
||||
|
||||
|
||||
|
||||
# 12.0.0-next.5 (2021-03-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **core:** Switch `emitDistinctChangesOnlyDefaultValue` to true ([#41121](https://github.com/angular/angular/issues/41121)) ([7096246](https://github.com/angular/angular/commit/70962465b5795f0a192f745016b1c461e7c8790b))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **compiler-cli:** introduce HttpContext request context ([#25751](https://github.com/angular/angular/issues/25751)) ([1644d64](https://github.com/angular/angular/commit/1644d64398491d4a324a5eee492d1fd37df52a01))
|
||||
* **core:** drop support for TypeScript 4.0 and 4.1 ([#41158](https://github.com/angular/angular/issues/41158)) ([fa04894](https://github.com/angular/angular/commit/fa048948be75c30dafebda69efbeb81776460500))
|
||||
* **core:** support TypeScript 4.2 ([#41158](https://github.com/angular/angular/issues/41158)) ([59ef409](https://github.com/angular/angular/commit/59ef40988e94f3173134368bc7d4e2726cdd8455))
|
||||
* **ngcc:** support `__read` helper as used by TypeScript 4.2 ([#41201](https://github.com/angular/angular/issues/41201)) ([66e9970](https://github.com/angular/angular/commit/66e997069102a12c607d830c7edf91cb202e5902)), closes [microsoft/TypeScript#41523](https://github.com/microsoft/TypeScript/issues/41523)
|
||||
* **ngcc:** support `__spreadArray` helper as used by TypeScript 4.2 ([#41201](https://github.com/angular/angular/issues/41201)) ([7b1214e](https://github.com/angular/angular/commit/7b1214eca2dd2f09e723a46bed857fcb7d40bc0b)), closes [microsoft/TypeScript#41523](https://github.com/microsoft/TypeScript/issues/41523) [#40394](https://github.com/angular/angular/issues/40394)
|
||||
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* **common:** remove unused methods from DomAdapter ([#41102](https://github.com/angular/angular/issues/41102)) ([3c66b10](https://github.com/angular/angular/commit/3c66b100dd6f05f53740f596c5eadb999c27c9c4))
|
||||
|
||||
|
||||
### BREAKING CHANGES
|
||||
|
||||
* **common:** Methods of the `PlatformLocation` class, namely `onPopState` and `onHashChange`,
|
||||
used to return `void`. Now those methods return functions that can be called
|
||||
to remove event handlers.
|
||||
* **common:** The methods of the `HttpParams` class now accept `string | number | boolean`
|
||||
instead of `string` for the value of a parameter.
|
||||
If you extended this class in your application,
|
||||
you'll have to update the signatures of your methods to reflect these changes.
|
||||
* **compiler-cli:** Linked libraries no longer generate legacy i18n message ids. Any downstream
|
||||
application that provides translations for these messages, will need to
|
||||
migrate their message ids using the `localize-migrate` command line tool.
|
||||
* **core:** Angular no longer maintains support for node v10
|
||||
* **core:** Previously the `ng.getDirectives` function threw an error in case a
|
||||
given DOM node had no Angular context associated with it (for example
|
||||
if a function was called for a DOM element outside of an Angular app).
|
||||
This behavior was inconsistent with other debugging utilities under `ng`
|
||||
namespace, which handled this situation without raising an exception.
|
||||
Now calling the `ng.getDirectives` function for such DOM nodes would
|
||||
result in an empty array returned from that function.
|
||||
* **core:** Switching default of `emitDistinctChangesOnlyDefaultValue`
|
||||
which changes the default behavior and may cause some applications which
|
||||
rely on the incorrect behavior to fail.
|
||||
@@ -191,8 +244,121 @@ export class QueryCompWithStrictChangeEmitParent {
|
||||
}
|
||||
```
|
||||
For backward compatibility before v12
|
||||
`emitDistinctChangesOnlyDefaultValue` was set to `false. This change
|
||||
`emitDistinctChangesOnlyDefaultValue` was set to `false`. This change
|
||||
changes the default to `true`.
|
||||
* **core:** The type of the `APP_INITIALIZER` token has been changed to more accurately
|
||||
reflect the types of return values that are handled by Angular. Previously,
|
||||
each initializer callback was typed to return `any`, this is now
|
||||
`Promise<unknown> | Observable<unknown> | void`. In the unlikely event that
|
||||
your application uses the `Injector.get` or `TestBed.inject` API to inject
|
||||
the `APP_INITIALIZER` token, you may need to update the code to account for
|
||||
the stricter type.
|
||||
|
||||
Additionally, TypeScript may report the TS2742 error if the `APP_INITIALIZER`
|
||||
token is used in an expression of which its inferred type has to be emitted
|
||||
into a .d.ts file. To workaround this, an explicit type annotation is needed,
|
||||
which would typically be `Provider` or `Provider[]`.
|
||||
* **core:** Minimum supported `zone.js` version is `0.11.4`
|
||||
* **forms:** The `emitEvent` option was added to the following `FormArray` and `FormGroup` methods:
|
||||
|
||||
* FormGroup.addControl
|
||||
* FormGroup.removeControl
|
||||
* FormGroup.setControl
|
||||
* FormArray.push
|
||||
* FormArray.insert
|
||||
* FormArray.removeAt
|
||||
* FormArray.setControl
|
||||
* FormArray.clear
|
||||
|
||||
If your app has custom classes that extend `FormArray` or `FormGroup` classes and override the
|
||||
above-mentioned methods, you may need to update your implementation to take the new options into
|
||||
account and make sure that overrides are compatible from a types perspective.
|
||||
* **forms:** Previously `min` and `max` attributes defined on the `<input type="number">`
|
||||
were ignored by Forms module. Now presence of these attributes would
|
||||
trigger min/max validation logic (in case `formControl`, `formControlName`
|
||||
or `ngModel` directives are also present on a given input) and
|
||||
corresponding form control status would reflect that.
|
||||
* **platform-browser:** `XhrFactory` has been moved from `@angular/common/http` to `@angular/common`.
|
||||
|
||||
**Before**
|
||||
```ts
|
||||
import {XhrFactory} from '@angular/common/http';
|
||||
```
|
||||
|
||||
**After**
|
||||
```ts
|
||||
import {XhrFactory} from '@angular/common';
|
||||
```
|
||||
|
||||
* **router:** Strict null checks will report on fragment potentially being null.
|
||||
Migration path: add null check.
|
||||
* **router:** The type of the `RouterLinkActive.routerLinkActiveOptions` input was
|
||||
expanded to allow more fine-tuned control. Code that previously read
|
||||
this property may need to be updated to account for the new type.
|
||||
|
||||
|
||||
|
||||
|
||||
## 11.2.10 (2021-04-14)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **compiler-cli:** prevent eliding default imports in incremental recompilations ([#41586](https://github.com/angular/angular/issues/41586)) ([43050a1](https://github.com/angular/angular/commit/43050a16de1dfcf8090461d9bc8d9804a98d3403)), closes [#41377](https://github.com/angular/angular/issues/41377)
|
||||
* **compiler-cli:** show a more specific error for Ivy NgModules ([#41534](https://github.com/angular/angular/issues/41534)) ([09eb125](https://github.com/angular/angular/commit/09eb1257d86061a26551d11efc042ba864b343d3))
|
||||
* **core:** error if DebugRenderer2.destroyNode is called twice in a row ([#41565](https://github.com/angular/angular/issues/41565)) ([419c189](https://github.com/angular/angular/commit/419c189ad3620cbe02e1927875ca7fa72a46627f))
|
||||
* **language-service:** bound attributes should not break directive matching ([#41597](https://github.com/angular/angular/issues/41597)) ([3dbcc7f](https://github.com/angular/angular/commit/3dbcc7f7a1f011f007c6b5abc2aff228bffba9b6)), closes [/github.com/angular/angular/blob/cdf1ea1951fb7187b1f6c9bb8a847c859c41e0b8/packages/compiler/src/render3/view/util.ts#L174-L206](https://github.com//github.com/angular/angular/blob/cdf1ea1951fb7187b1f6c9bb8a847c859c41e0b8/packages/compiler/src/render3/view/util.ts/issues/L174-L206)
|
||||
* **language-service:** resolve to the pre-compiled style when compiled css url is provided ([#41538](https://github.com/angular/angular/issues/41538)) ([3d54980](https://github.com/angular/angular/commit/3d549809c3c8659197f323fc78a9fb3756e9969e)), closes [angular/vscode-ng-language-service#1263](https://github.com/angular/vscode-ng-language-service/issues/1263)
|
||||
* **language-service:** use 'any' instead of failing for inline TCBs ([#41513](https://github.com/angular/angular/issues/41513)) ([f76873e](https://github.com/angular/angular/commit/f76873e4d5aefe9276873ee0270c331561329d9c)), closes [#41395](https://github.com/angular/angular/issues/41395)
|
||||
* **router:** handle new navigations from a NavigationEnd event ([#41262](https://github.com/angular/angular/issues/41262)) ([#41511](https://github.com/angular/angular/issues/41511)) ([e34299a](https://github.com/angular/angular/commit/e34299af256326366ef2176bd905d9a64158f2df)), closes [#37460](https://github.com/angular/angular/issues/37460)
|
||||
* **router:** Remove information about attached component when deactivating route ([#41381](https://github.com/angular/angular/issues/41381)) ([646f4a1](https://github.com/angular/angular/commit/646f4a1fe6057b0c70d61a20f3aecf28e71654da)), closes [#41379](https://github.com/angular/angular/issues/41379)
|
||||
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* **compiler-cli:** allow incremental compilation in the presence of redirected source files ([#41587](https://github.com/angular/angular/issues/41587)) ([616145e](https://github.com/angular/angular/commit/616145e1a7aa594a26345ac0af909ecbacbe7b70))
|
||||
|
||||
|
||||
## 11.2.9 (2021-04-07)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **bazel:** add missing dependency on `tslib` ([#41480](https://github.com/angular/angular/issues/41480)) ([8d005e5](https://github.com/angular/angular/commit/8d005e51322b68bb66ff311fc78fa34dd440b123)), closes [11.2.8/src/api-extractor/index.js#L20](https://github.com/11.2.8/src/api-extractor/index.js/issues/L20)
|
||||
* **compiler-cli:** Allow analysis to continue with invalid style url ([#41403](https://github.com/angular/angular/issues/41403)) ([#41489](https://github.com/angular/angular/issues/41489)) ([07131fa](https://github.com/angular/angular/commit/07131fa8ef9f9e6930cf297c27e450c15fb4f10b))
|
||||
* **compiler-cli:** fix extending angularCompilerOptions from non relative extension less TypeScript configuration files ([#41349](https://github.com/angular/angular/issues/41349)) ([e0165fd](https://github.com/angular/angular/commit/e0165fd7f8374694c1f9d74ecdea5af4f8bba4c7)), closes [#41343](https://github.com/angular/angular/issues/41343)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **bazel:** allow setting `compilationMode` in `ng_module` rule ([#41418](https://github.com/angular/angular/issues/41418)) ([e6da38a](https://github.com/angular/angular/commit/e6da38a5e017bbb2e52857472363b5ab2cd84281))
|
||||
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* **core:** add private hooks around user code executed by the runtime ([#41421](https://github.com/angular/angular/issues/41421)) ([94af9d9](https://github.com/angular/angular/commit/94af9d95bbde5d068e89d6697d87851dc246a88f))
|
||||
* **language-service:** add perf tracing to LanguageService ([#41401](https://github.com/angular/angular/issues/41401)) ([7b0a800](https://github.com/angular/angular/commit/7b0a800b69170c6d32cc49dbc8961b2e2821fe40))
|
||||
|
||||
|
||||
|
||||
## 11.2.8 (2021-04-01)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **compiler:** handle case-sensitive CSS custom properties ([#41380](https://github.com/angular/angular/issues/41380)) ([f9da272](https://github.com/angular/angular/commit/f9da27214b74d60d398cf46493767711e710635c)), closes [#41364](https://github.com/angular/angular/issues/41364)
|
||||
|
||||
|
||||
|
||||
## 11.2.7 (2021-03-24)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **compiler:** correctly process multiple rules containing `:host` selectors ([#41261](https://github.com/angular/angular/issues/41261)) ([f358d6b](https://github.com/angular/angular/commit/f358d6b113e1a8215fcb50dbc3c5db8799699901)), closes [#41237](https://github.com/angular/angular/issues/41237)
|
||||
* **compiler-cli:** add `useInlining` option to type check config ([#41268](https://github.com/angular/angular/issues/41268)) ([57644e9](https://github.com/angular/angular/commit/57644e95aadbfe9c8f336be77a22f7a5e1859758)), closes [#40963](https://github.com/angular/angular/issues/40963)
|
||||
* **core:** remove obsolete check for [class] and [className] presence ([#41254](https://github.com/angular/angular/issues/41254)) ([8a53b54](https://github.com/angular/angular/commit/8a53b5454eea7b4db09498d9018687aa0b0ca7f3))
|
||||
* **language-service:** show suggestion when type inference is suboptimal ([#41072](https://github.com/angular/angular/issues/41072)) ([18cd7a0](https://github.com/angular/angular/commit/18cd7a0c6921983556fe1fffbff93d42ae138007)), closes [angular/vscode-ng-language-service#1155](https://github.com/angular/vscode-ng-language-service/issues/1155) [#41042](https://github.com/angular/angular/issues/41042)
|
||||
|
||||
|
||||
|
||||
@@ -217,44 +383,6 @@ changes the default to `true`.
|
||||
|
||||
|
||||
|
||||
# 12.0.0-next.4 (2021-03-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **common:** cleanup location change listeners when the root view is removed ([#40867](https://github.com/angular/angular/issues/40867)) ([38524c4](https://github.com/angular/angular/commit/38524c4d29290d3339ad2d7335a0ea84f5701d26)), closes [#31546](https://github.com/angular/angular/issues/31546)
|
||||
* **core:** remove duplicated EMPTY_OBJ constant ([#41066](https://github.com/angular/angular/issues/41066)) ([bf158e7](https://github.com/angular/angular/commit/bf158e7ff0715aabeae3c2c1ac923bf8cc7e4cfd))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **compiler:** emit @__PURE__ or [@pure](https://github.com/pure)OrBreakMyCode annotations in the generated code ([#41096](https://github.com/angular/angular/issues/41096)) ([9c21028](https://github.com/angular/angular/commit/9c210281d4073289ff4633a866e395ca34e97ef9))
|
||||
* **compiler-cli:** support producing Closure-specific PURE annotations ([#41021](https://github.com/angular/angular/issues/41021)) ([fbc9df1](https://github.com/angular/angular/commit/fbc9df181ea50527cb755382b54b8b45d0f9ef39))
|
||||
* **core:** manually annotate de-sugarred core tree-shakable providers with [@pure](https://github.com/pure)OrBreakMyCode ([#41096](https://github.com/angular/angular/issues/41096)) ([03d47d5](https://github.com/angular/angular/commit/03d47d570167a5a70b17552ca2c8d531683d900f))
|
||||
* **core:** more precise type for `APP_INITIALIZER` token ([#40986](https://github.com/angular/angular/issues/40986)) ([ca721c2](https://github.com/angular/angular/commit/ca721c2972f44d903a0e12fae3397ab62769e649)), closes [#40729](https://github.com/angular/angular/issues/40729)
|
||||
* **localize:** add scripts to migrate away from legacy message IDs ([#41026](https://github.com/angular/angular/issues/41026)) ([1735430](https://github.com/angular/angular/commit/17354304768f3c2b272c4c5d5636b5709287276f))
|
||||
|
||||
|
||||
### BREAKING CHANGES
|
||||
|
||||
* **common:** Methods of the `PlatformLocation` class, namely `onPopState` and `onHashChange`,
|
||||
used to return `void`. Now those methods return functions that can be called
|
||||
to remove event handlers.
|
||||
* **core:** The type of the `APP_INITIALIZER` token has been changed to more accurately
|
||||
reflect the types of return values that are handled by Angular. Previously,
|
||||
each initializer callback was typed to return `any`, this is now
|
||||
`Promise<unknown> | Observable<unknown> | void`. In the unlikely event that
|
||||
your application uses the `Injector.get` or `TestBed.inject` API to inject
|
||||
the `APP_INITIALIZER` token, you may need to update the code to account for
|
||||
the stricter type.
|
||||
|
||||
Additionally, TypeScript may report the TS2742 error if the `APP_INITIALIZER`
|
||||
token is used in an expression of which its inferred type has to be emitted
|
||||
into a .d.ts file. To workaround this, an explicit type annotation is needed,
|
||||
which would typically be `Provider` or `Provider[]`.
|
||||
|
||||
|
||||
|
||||
## 11.2.5 (2021-03-10)
|
||||
|
||||
|
||||
@@ -273,36 +401,6 @@ which would typically be `Provider` or `Provider[]`.
|
||||
|
||||
|
||||
|
||||
# 12.0.0-next.3 (2021-03-03)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **animations:** cleanup DOM elements when the root view is removed ([#41001](https://github.com/angular/angular/issues/41001)) ([a31da48](https://github.com/angular/angular/commit/a31da4850788800ba9735d617e7e3bb621a79c93))
|
||||
* **common:** allow number or boolean as http params ([#40663](https://github.com/angular/angular/issues/40663)) ([91cdc11](https://github.com/angular/angular/commit/91cdc11aa0347d1b71f2f732e00af9c3ff8078fc)), closes [#23856](https://github.com/angular/angular/issues/23856)
|
||||
* **core:** remove duplicated EMPTY_ARRAY constant ([#40991](https://github.com/angular/angular/issues/40991)) ([e12d9de](https://github.com/angular/angular/commit/e12d9dec64bc3d02e58f8f85a65a939394fb9531))
|
||||
* **language-service:** Add plugin option to force strictTemplates ([#41062](https://github.com/angular/angular/issues/41062)) ([e9e7c33](https://github.com/angular/angular/commit/e9e7c33f3c170648ec8c86d859980c7fe78fba39))
|
||||
* **language-service:** use single entry point for Ivy and View Engine ([#40967](https://github.com/angular/angular/issues/40967)) ([e986a97](https://github.com/angular/angular/commit/e986a9787b7787c3cffef69d06a2e7e1228e3f40))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **animations:** add support for disabling animations through BrowserAnimationsModule.withConfig ([#40731](https://github.com/angular/angular/issues/40731)) ([29d8a0a](https://github.com/angular/angular/commit/29d8a0ab09a13600405343037079d151c3a04095))
|
||||
* **router:** Add more fine-tuned control in `routerLinkActiveOptions` ([#40303](https://github.com/angular/angular/issues/40303)) ([6c05c80](https://github.com/angular/angular/commit/6c05c80f19bc84189cc1d2f2e029f6f13d60dc18)), closes [#13205](https://github.com/angular/angular/issues/13205)
|
||||
|
||||
|
||||
### BREAKING CHANGES
|
||||
|
||||
* **common:** The methods of the `HttpParams` class now accept `string | number | boolean`
|
||||
instead of `string` for the value of a parameter.
|
||||
If you extended this class in your application,
|
||||
you'll have to update the signatures of your methods to reflect these changes.
|
||||
* **router:** The type of the `RouterLinkActive.routerLinkActiveOptions` input was
|
||||
expanded to allow more fine-tuned control. Code that previously read
|
||||
this property may need to be updated to account for the new type.
|
||||
|
||||
|
||||
|
||||
## 11.2.4 (2021-03-03)
|
||||
|
||||
|
||||
@@ -324,28 +422,6 @@ this property may need to be updated to account for the new type.
|
||||
|
||||
|
||||
|
||||
# 12.0.0-next.2 (2021-02-24)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **common:** avoid mutating context object in NgTemplateOutlet ([#40360](https://github.com/angular/angular/issues/40360)) ([d3705b3](https://github.com/angular/angular/commit/d3705b3284113f752ee05e9f0d2f6e75c723ea5b)), closes [#24515](https://github.com/angular/angular/issues/24515)
|
||||
* **core:** allow EmbeddedViewRef context to be updated ([#40360](https://github.com/angular/angular/issues/40360)) ([a3e1719](https://github.com/angular/angular/commit/a3e17190e7e7e0329ed3643299c24d5fd510b7d6)), closes [#24515](https://github.com/angular/angular/issues/24515)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **core:** drop support for zone.js 0.10.x ([#40823](https://github.com/angular/angular/issues/40823)) ([aaf9b31](https://github.com/angular/angular/commit/aaf9b31fb472826c279a720cc875007987f9aa6f)), closes [angular/angular-cli#20034](https://github.com/angular/angular-cli/issues/20034)
|
||||
* **core:** support APP_INITIALIZER work with observable ([#33222](https://github.com/angular/angular/issues/33222)) ([ca17ac5](https://github.com/angular/angular/commit/ca17ac523cc2ed8046931c86a2c12d97fb6796ca)), closes [#15088](https://github.com/angular/angular/issues/15088)
|
||||
* **router:** Allow for custom router outlet implementations ([#40827](https://github.com/angular/angular/issues/40827)) ([a82fddf](https://github.com/angular/angular/commit/a82fddf1ce6166e0f697e429370eade114094670))
|
||||
|
||||
|
||||
### BREAKING CHANGES
|
||||
|
||||
* **core:** Minimum supported `zone.js` version is `0.11.4`
|
||||
|
||||
|
||||
|
||||
## 11.2.3 (2021-02-24)
|
||||
|
||||
|
||||
@@ -372,42 +448,6 @@ this property may need to be updated to account for the new type.
|
||||
* **language-service:** short-circuit LS operations when we know there is no Angular information to provide ([#40946](https://github.com/angular/angular/issues/40946)) ([73a3ff1](https://github.com/angular/angular/commit/73a3ff11cbca21ec0a64e064c7968c93c0bd8e0a))
|
||||
|
||||
|
||||
<a name="12.0.0-next.1"></a>
|
||||
# 12.0.0-next.1 (2021-02-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **compiler-cli:** `readConfiguration` existing options should override options in tsconfig ([#40694](https://github.com/angular/angular/issues/40694)) ([b7c4d07](https://github.com/angular/angular/commit/b7c4d07e81277f7aed566e443d1d4e1395c5a2f4))
|
||||
* **compiler-cli:** extend `angularCompilerOptions` in tsconfig from node ([#40694](https://github.com/angular/angular/issues/40694)) ([5eb1954](https://github.com/angular/angular/commit/5eb195416bf73f2fa59de52531724d8d19392975)), closes [#36715](https://github.com/angular/angular/issues/36715)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **common:** support ICU standard "stand alone day of week" with `DatePipe` ([#40766](https://github.com/angular/angular/issues/40766)) ([c56ecab](https://github.com/angular/angular/commit/c56ecab515c28d2ad45c630080bfbf549675528a)), closes [#26922](https://github.com/angular/angular/issues/26922)
|
||||
* **forms:** add `emitEvent` option for AbstractControl-based class methods ([#31031](https://github.com/angular/angular/issues/31031)) ([4ec045e](https://github.com/angular/angular/commit/4ec045e12b7614b901d4ef643988b86f09dfeee5)), closes [#29662](https://github.com/angular/angular/issues/29662)
|
||||
* **platform-server:** allow shimming the global env sooner ([#40559](https://github.com/angular/angular/issues/40559)) ([43ecf8a](https://github.com/angular/angular/commit/43ecf8a77bc7e92d3c635b450de904732e938e64)), closes [#24551](https://github.com/angular/angular/issues/24551) [#39950](https://github.com/angular/angular/issues/39950) [#39950](https://github.com/angular/angular/issues/39950)
|
||||
|
||||
|
||||
### BREAKING CHANGES
|
||||
|
||||
* **forms:** The `emitEvent` option was added to the following `FormArray` and `FormGroup` methods:
|
||||
|
||||
* FormGroup.addControl
|
||||
* FormGroup.removeControl
|
||||
* FormGroup.setControl
|
||||
* FormArray.push
|
||||
* FormArray.insert
|
||||
* FormArray.removeAt
|
||||
* FormArray.setControl
|
||||
* FormArray.clear
|
||||
|
||||
If your app has custom classes that extend `FormArray` or `FormGroup` classes and override the
|
||||
above-mentioned methods, you may need to update your implementation to take the new options into
|
||||
account and make sure that overrides are compatible from a types perspective.
|
||||
|
||||
|
||||
|
||||
<a name="11.2.1"></a>
|
||||
## 11.2.1 (2021-02-17)
|
||||
|
||||
@@ -425,53 +465,6 @@ account and make sure that overrides are compatible from a types perspective.
|
||||
|
||||
|
||||
|
||||
<a name="12.0.0-next.0"></a>
|
||||
# 12.0.0-next.0 (2021-02-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **bazel:** update build tooling for latest changes in rules_nodejs ([#40710](https://github.com/angular/angular/issues/40710)) ([696f7bc](https://github.com/angular/angular/commit/696f7bc))
|
||||
* **bazel:** update integration test to use rules_nodejs@3.1.0 ([#40710](https://github.com/angular/angular/issues/40710)) ([34de89a](https://github.com/angular/angular/commit/34de89a))
|
||||
* **bazel:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([2c90391](https://github.com/angular/angular/commit/2c90391))
|
||||
* **benchpress:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([e721a5d](https://github.com/angular/angular/commit/e721a5d))
|
||||
* **compiler:** support multiple `:host-context()` selectors ([#40494](https://github.com/angular/angular/issues/40494)) ([07b7af3](https://github.com/angular/angular/commit/07b7af3)), closes [#19199](https://github.com/angular/angular/issues/19199)
|
||||
* **compiler:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([f728490](https://github.com/angular/angular/commit/f728490))
|
||||
* **compiler-cli:** update ngcc integration tests for latest changes in rules_nodejs ([#40710](https://github.com/angular/angular/issues/40710)) ([d7f5755](https://github.com/angular/angular/commit/d7f5755))
|
||||
* **compiler-cli:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([b75d7cb](https://github.com/angular/angular/commit/b75d7cb))
|
||||
* **core:** make DefaultIterableDiffer keep the order of duplicates ([#23941](https://github.com/angular/angular/issues/23941)) ([a826926](https://github.com/angular/angular/commit/a826926)), closes [#23815](https://github.com/angular/angular/issues/23815)
|
||||
* **core:** NgZone coaleascing options should trigger onStable correctly ([#40540](https://github.com/angular/angular/issues/40540)) ([22f9e45](https://github.com/angular/angular/commit/22f9e45))
|
||||
* **elements:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([efd4149](https://github.com/angular/angular/commit/efd4149))
|
||||
* **http:** complete the request on timeout ([#39807](https://github.com/angular/angular/issues/39807)) ([61a0b6d](https://github.com/angular/angular/commit/61a0b6d)), closes [#26453](https://github.com/angular/angular/issues/26453)
|
||||
* **http:** emit error on XMLHttpRequest abort event ([#40767](https://github.com/angular/angular/issues/40767)) ([3897265](https://github.com/angular/angular/commit/3897265)), closes [#22324](https://github.com/angular/angular/issues/22324)
|
||||
* **localize:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([4b469c9](https://github.com/angular/angular/commit/4b469c9))
|
||||
* **platform-browser:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([7ecfd2d](https://github.com/angular/angular/commit/7ecfd2d))
|
||||
* **router:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([350dada](https://github.com/angular/angular/commit/350dada))
|
||||
* **service-worker:** update type castings for JSON.parse usage ([#40710](https://github.com/angular/angular/issues/40710)) ([4f7ff96](https://github.com/angular/angular/commit/4f7ff96))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **common:** implement `appendAll()` method on `HttpParams` ([#20930](https://github.com/angular/angular/issues/20930)) ([575a2d1](https://github.com/angular/angular/commit/575a2d1)), closes [#20798](https://github.com/angular/angular/issues/20798)
|
||||
* **forms:** introduce min and max validators ([#39063](https://github.com/angular/angular/issues/39063)) ([8fb83ea](https://github.com/angular/angular/commit/8fb83ea)), closes [#16352](https://github.com/angular/angular/issues/16352)
|
||||
* **http:** expose a list of human-readable http status codes ([#23548](https://github.com/angular/angular/issues/23548)) ([6fe3a1d](https://github.com/angular/angular/commit/6fe3a1d)), closes [#23543](https://github.com/angular/angular/issues/23543)
|
||||
* **language-service:** add command for getting components for a template file ([#40655](https://github.com/angular/angular/issues/40655)) ([5cde4ad](https://github.com/angular/angular/commit/5cde4ad))
|
||||
* **language-service:** Add diagnostics to suggest turning on strict mode ([#40423](https://github.com/angular/angular/issues/40423)) ([ecae75f](https://github.com/angular/angular/commit/ecae75f))
|
||||
* **language-service:** Implement `getRenameInfo` ([#40439](https://github.com/angular/angular/issues/40439)) ([4e8198d](https://github.com/angular/angular/commit/4e8198d))
|
||||
* **language-service:** initial implementation for `findRenameLocations` ([#40140](https://github.com/angular/angular/issues/40140)) ([9a5ac47](https://github.com/angular/angular/commit/9a5ac47))
|
||||
* **language-service:** view template typecheck block ([#39974](https://github.com/angular/angular/issues/39974)) ([d482f5c](https://github.com/angular/angular/commit/d482f5c))
|
||||
|
||||
|
||||
### BREAKING CHANGES
|
||||
|
||||
* **forms:** Previously `min` and `max` attributes defined on the `<input type="number">`
|
||||
were ignored by Forms module. Now presence of these attributes would
|
||||
trigger min/max validation logic (in case `formControl`, `formControlName`
|
||||
or `ngModel` directives are also present on a given input) and
|
||||
corresponding form control status would reflect that.
|
||||
|
||||
|
||||
|
||||
<a name="11.2.0"></a>
|
||||
# 11.2.0 (2021-02-10)
|
||||
|
||||
@@ -842,6 +835,9 @@ This release contains the same set the of changes as 11.2.0-next.1.
|
||||
<a name="11.0.0"></a>
|
||||
# 11.0.0 (2020-11-11)
|
||||
|
||||
[Blog post "Version 11 of Angular Now Available"](https://blog.angular.io/version-11-of-angular-now-available-74721b7952f7).
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **bazel:** only providing stamping information if the `--stamp` flag is used ([#39392](https://github.com/angular/angular/issues/39392)) ([84e09a0](https://github.com/angular/angular/commit/84e09a0))
|
||||
@@ -1515,6 +1511,9 @@ discover but could be affecting production environments.
|
||||
<a name="10.0.0"></a>
|
||||
# [10.0.0](https://github.com/angular/angular/compare/10.0.0-rc.6...10.0.0) (2020-06-24)
|
||||
|
||||
[Blog post "Version 10 of Angular Now Available"](https://blog.angular.io/version-10-of-angular-now-available-78960babd41).
|
||||
|
||||
|
||||
### Release Highlights & Update instructions
|
||||
To learn about the release highlights and our CLI-powered automated update workflow for your projects please check out the [v10 release announcement](https://blog.angular.io/version-10-of-angular-now-available-78960babd41).
|
||||
|
||||
@@ -2021,6 +2020,9 @@ This release contains various API docs improvements.
|
||||
<a name="9.1.0"></a>
|
||||
# [9.1.0](https://github.com/angular/angular/compare/9.0.0...9.1.0) (2020-03-25)
|
||||
|
||||
[Blog post "Version 9.1 of Angular Now Available — TypeScript 3.8, faster builds, and more"](https://blog.angular.io/version-9-1-of-angular-now-available-typescript-3-8-faster-builds-and-more-eb292f989428).
|
||||
|
||||
|
||||
### Release Highlights
|
||||
|
||||
To learn about the release highlights and our CLI-powered automated update workflow for your projects please check out the [v9.1 release announcement](https://blog.angular.io/version-9-1-of-angular-now-available-typescript-3-8-faster-builds-and-more-eb292f989428).
|
||||
@@ -2357,6 +2359,8 @@ To learn about the release highlights and our CLI-powered automated update workf
|
||||
<a name="9.0.0"></a>
|
||||
# [9.0.0](https://github.com/angular/angular/compare/8.2.14...9.0.0) (2020-02-06)
|
||||
|
||||
[Blog post "Version 9 of Angular Now Available — Project Ivy has arrived!"](https://blog.angular.io/version-9-of-angular-now-available-project-ivy-has-arrived-23c97b63cfa3).
|
||||
|
||||
|
||||
### Release Highlights & Update instructions
|
||||
To learn about the release highlights and our CLI-powered automated update workflow for your projects please check out the [v9 release announcement](https://blog.angular.io/version-9-of-angular-now-available-project-ivy-has-arrived-23c97b63cfa3).
|
||||
@@ -3440,6 +3444,9 @@ This release contains various API docs improvements.
|
||||
<a name="8.0.0"></a>
|
||||
# [8.0.0](https://github.com/angular/angular/compare/7.2.0...8.0.0) (2019-05-28)
|
||||
|
||||
[Blog post "Version 8 of Angular — Smaller bundles, CLI APIs, and alignment with the ecosystem"](https://blog.angular.io/version-8-of-angular-smaller-bundles-cli-apis-and-alignment-with-the-ecosystem-af0261112a27).
|
||||
|
||||
|
||||
### Release Highlights & Update instructions
|
||||
To learn about the release highlights and our CLI-powered automated update workflow for your projects please check out the [v8 release announcement](https://blog.angular.io/version-8-of-angular-smaller-bundles-cli-apis-and-alignment-with-the-ecosystem-af0261112a27).
|
||||
|
||||
@@ -4168,6 +4175,8 @@ This release contains various API docs improvements.
|
||||
<a name="7.0.0"></a>
|
||||
# [7.0.0](https://github.com/angular/angular/compare/7.0.0-rc.1...7.0.0) (2018-10-18)
|
||||
|
||||
[Blog post "Version 7 of Angular — CLI Prompts, Virtual Scroll, Drag and Drop and more"](https://blog.angular.io/version-7-of-angular-cli-prompts-virtual-scroll-drag-and-drop-and-more-c594e22e7b8c).
|
||||
|
||||
|
||||
### Release Highlights & Update instructions
|
||||
|
||||
@@ -4319,6 +4328,9 @@ Note: the 6.1.5 release on npm accidentally glitched-out midway, so we cut 6.1.6
|
||||
<a name="6.1.0"></a>
|
||||
# [6.1.0](https://github.com/angular/angular/compare/6.0.0-rc.5...6.1.0) (2018-07-25)
|
||||
|
||||
[Blog post "Angular v6.1 Now Available — TypeScript 2.9, Scroll Positioning, and more"](https://blog.angular.io/angular-v6-1-now-available-typescript-2-9-scroll-positioning-and-more-9f1c03007bb6).
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **animations:** always render end-state styles for orphaned DOM nodes ([#24236](https://github.com/angular/angular/issues/24236)) ([dc4a3d0](https://github.com/angular/angular/commit/dc4a3d0))
|
||||
@@ -4521,6 +4533,9 @@ For example:
|
||||
<a name="6.0.0"></a>
|
||||
# [6.0.0](https://github.com/angular/angular/compare/6.0.0-beta.0...6.0.0) (2018-05-03)
|
||||
|
||||
[Blog post "Version 6 of Angular Now Available"](https://blog.angular.io/version-6-of-angular-now-available-cc56b0efa7a4).
|
||||
|
||||
|
||||
### Release Highlights & Update instructions
|
||||
|
||||
Angular v6 is the first release of Angular that unifies the Framework, Material and CLI.
|
||||
@@ -4911,6 +4926,8 @@ To learn about the release highlights and our new CLI-powered update workflow fo
|
||||
<a name="5.2.0"></a>
|
||||
# [5.2.0](https://github.com/angular/angular/compare/5.2.0-rc.0...5.2.0) (2018-01-10)
|
||||
|
||||
[Blog post "Angular 5.2 Now Available"](https://blog.angular.io/angular-5-2-now-available-312d1099bd81).
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
@@ -5017,6 +5034,8 @@ Note: Due to an animation fix back in 5.1.1 ([c2b3792](https://github.com/angula
|
||||
<a name="5.1.0"></a>
|
||||
# [5.1.0](https://github.com/angular/angular/compare/5.1.0-rc.1...5.1.0) (2017-12-06)
|
||||
|
||||
[Blog post "Angular 5.1 & More Now Available"](https://blog.angular.io/angular-5-1-more-now-available-27d372f5eb4e).
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
@@ -5203,6 +5222,9 @@ Note: Due to an animation fix back in 5.1.1 ([c2b3792](https://github.com/angula
|
||||
<a name="5.0.0"></a>
|
||||
# [5.0.0](https://github.com/angular/angular/compare/5.0.0-rc.9...5.0.0) pentagonal-donut (2017-11-01)
|
||||
|
||||
[Blog post "Version 5.0.0 of Angular Now Available"](https://blog.angular.io/version-5-0-0-of-angular-now-available-37e414935ced).
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **animations:** allow @.disabled property to work without an expression ([#18713](https://github.com/angular/angular/issues/18713)) ([2159342](https://github.com/angular/angular/commit/2159342))
|
||||
@@ -5571,6 +5593,8 @@ Note: the 4.4.0 release on npm accidentally glitched-out midway, so we cut 4.4.1
|
||||
<a name="4.3.0"></a>
|
||||
# [4.3.0](https://github.com/angular/angular/compare/4.3.0-rc.0...4.3.0) (2017-07-14)
|
||||
|
||||
[Blog post "Angular 4.3 Now Available"](https://blog.angular.io/angular-4-3-now-available-8d57b57eb5a8).
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<h1 align="center">Angular - One framework. Mobile & desktop.</h1>
|
||||
<h1 align="center">Angular - The modern web developer's platform.</h1>
|
||||
|
||||
<p align="center">
|
||||
<img src="aio/src/assets/images/logos/angular/angular.png" alt="angular-logo" width="120px" height="120px"/>
|
||||
|
||||
@@ -8,8 +8,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
|
||||
# Fetch rules_nodejs so we can install our npm dependencies
|
||||
http_archive(
|
||||
name = "build_bazel_rules_nodejs",
|
||||
sha256 = "f533eeefc8fe1ddfe93652ec50f82373d0c431f7faabd5e6323f6903195ef227",
|
||||
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/3.3.0/rules_nodejs-3.3.0.tar.gz"],
|
||||
sha256 = "65067dcad93a61deb593be7d3d9a32a4577d09665536d8da536d731da5cd15e2",
|
||||
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/3.4.2/rules_nodejs-3.4.2.tar.gz"],
|
||||
)
|
||||
|
||||
# Check the rules_nodejs version and download npm dependencies
|
||||
@@ -62,27 +62,3 @@ sass_repositories()
|
||||
load("@io_bazel_skydoc//skylark:skylark.bzl", "skydoc_repositories")
|
||||
|
||||
skydoc_repositories()
|
||||
|
||||
load("@bazel_toolchains//rules:environments.bzl", "clang_env")
|
||||
load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
|
||||
|
||||
rbe_autoconfig(
|
||||
name = "rbe_ubuntu1604_angular",
|
||||
# Need to specify a base container digest in order to ensure that we can use the checked-in
|
||||
# platform configurations for the "ubuntu16_04" image. Otherwise the autoconfig rule would
|
||||
# need to pull the image and run it in order determine the toolchain configuration. See:
|
||||
# https://github.com/bazelbuild/bazel-toolchains/blob/4.0.0/configs/ubuntu16_04_clang/versions.bzl
|
||||
base_container_digest = "sha256:f6568d8168b14aafd1b707019927a63c2d37113a03bcee188218f99bd0327ea1",
|
||||
# Note that if you change the `digest`, you might also need to update the
|
||||
# `base_container_digest` to make sure marketplace.gcr.io/google/rbe-ubuntu16-04-webtest:<digest>
|
||||
# and marketplace.gcr.io/google/rbe-ubuntu16-04:<base_container_digest> have
|
||||
# the same Clang and JDK installed. Clang is needed because of the dependency on
|
||||
# @com_google_protobuf. Java is needed for the Bazel's test executor Java tool.
|
||||
digest = "sha256:dddaaddbe07a61c2517f9b08c4977fc23c4968fcb6c0b8b5971e955d2de7a961",
|
||||
env = clang_env(),
|
||||
registry = "marketplace.gcr.io",
|
||||
# We can't use the default "ubuntu16_04" RBE image provided by the autoconfig because we need
|
||||
# a specific Linux kernel that comes with "libx11" in order to run headless browser tests.
|
||||
repository = "google/rbe-ubuntu16-04-webtest",
|
||||
use_checked_in_confs = "Force",
|
||||
)
|
||||
|
||||
@@ -19,9 +19,6 @@ Here are the most important tasks you might need to use:
|
||||
|
||||
* `yarn build` - create a production build of the application (after installing dependencies, boilerplate, etc).
|
||||
* `yarn build-local` - same as `build`, but use `setup-local` instead of `setup`.
|
||||
* `yarn build-local-with-viewengine` - same as `build-local`, but in addition also turns on `ViewEngine` (pre-Ivy) mode in aio.
|
||||
(Note: To turn on `ViewEngine` mode in docs examples, see `yarn boilerplate:add:viewengine` below.)
|
||||
|
||||
* `yarn start` - run a development web server that watches the files; then builds the doc-viewer and reloads the page, as necessary.
|
||||
* `yarn serve-and-sync` - run both the `docs-watch` and `start` in the same console.
|
||||
* `yarn lint` - check that the doc-viewer code follows our style rules.
|
||||
@@ -35,7 +32,6 @@ Here are the most important tasks you might need to use:
|
||||
* `yarn docs-test` - run the unit tests for the doc generation code.
|
||||
|
||||
* `yarn boilerplate:add` - generate all the boilerplate code for the examples, so that they can be run locally.
|
||||
* `yarn boilerplate:add:viewengine` - same as `boilerplate:add` but also turns on `ViewEngine` (pre-Ivy) mode.
|
||||
* `yarn boilerplate:remove` - remove all the boilerplate code that was added via `yarn boilerplate:add`.
|
||||
* `yarn create-example` - create a new example directory containing initial source files.
|
||||
|
||||
@@ -46,7 +42,6 @@ Here are the most important tasks you might need to use:
|
||||
- `--setup`: generate boilerplate, force webdriver update & other setup, then run tests.
|
||||
- `--local`: run e2e tests with the local version of Angular contained in the "dist" folder.
|
||||
_Requires `--setup` in order to take effect._
|
||||
- `--viewengine`: run e2e tests in `ViewEngine` (pre-Ivy) mode.
|
||||
- `--filter=foo`: limit e2e tests to those containing the word "foo".
|
||||
|
||||
> **Note for Windows users**
|
||||
|
||||
@@ -49,6 +49,6 @@
|
||||
"supertest": "^4.0.2",
|
||||
"tslint": "^6.1.3",
|
||||
"tslint-jasmine-noSkipOrFocus": "^1.0.9",
|
||||
"typescript": "^4.2.3"
|
||||
"typescript": "^4.2.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2563,10 +2563,10 @@ typedarray-to-buffer@^3.1.5:
|
||||
dependencies:
|
||||
is-typedarray "^1.0.0"
|
||||
|
||||
typescript@^4.2.3:
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.3.tgz#39062d8019912d43726298f09493d598048c1ce3"
|
||||
integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==
|
||||
typescript@^4.2.4:
|
||||
version "4.2.4"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961"
|
||||
integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==
|
||||
|
||||
undefsafe@^2.0.2:
|
||||
version "2.0.2"
|
||||
|
||||
+1
-7
@@ -31,15 +31,9 @@
|
||||
"polyfills": "src/polyfills.ts",
|
||||
"tsConfig": "tsconfig.app.json",
|
||||
"webWorkerTsConfig": "tsconfig.worker.json",
|
||||
"aot": true,
|
||||
"optimization": true,
|
||||
"buildOptimizer": true,
|
||||
"outputHashing": "all",
|
||||
"sourceMap": true,
|
||||
"statsJson": true,
|
||||
"extractLicenses": true,
|
||||
"namedChunks": true,
|
||||
"vendorChunk": false,
|
||||
"assets": [
|
||||
"src/assets",
|
||||
"src/generated",
|
||||
@@ -59,6 +53,7 @@
|
||||
},
|
||||
"configurations": {
|
||||
"fast": {
|
||||
"buildOptimizer": false,
|
||||
"optimization": false
|
||||
},
|
||||
"next": {
|
||||
@@ -144,7 +139,6 @@
|
||||
"karmaConfig": "karma.conf.js",
|
||||
"assets": [
|
||||
"src/assets",
|
||||
"src/generated",
|
||||
"src/pwa-manifest.json",
|
||||
"src/google385281288605d160.html"
|
||||
],
|
||||
|
||||
@@ -20,29 +20,27 @@ This ID is a string that looks like `UA-123456-12`.
|
||||
You can choose to use a descriptive string as the key value, or be assigned a random key when you run the CLI command.
|
||||
For example, the following command adds a configuration key named "tracking".
|
||||
|
||||
<code-example language="sh" class="code-shell">
|
||||
<code-example language="sh">
|
||||
ng config --global cli.analyticsSharing.tracking UA-123456-12
|
||||
</code-example>
|
||||
|
||||
To turn off this feature, run the following command:
|
||||
|
||||
<code-example language="sh" class="code-shell">
|
||||
<code-example language="sh">
|
||||
ng config --global --remove cli.analyticsSharing
|
||||
</code-example>
|
||||
|
||||
|
||||
## Per user tracking
|
||||
|
||||
You can add a custom user ID to the global configuration, in order to identify unique usage of commands and flags.
|
||||
If that user enables CLI analytics for their own project, your analytics display tracks and labels their individual usage.
|
||||
|
||||
|
||||
<code-example language="sh" class="code-shell">
|
||||
<code-example language="sh">
|
||||
ng config --global cli.analyticsSharing.user SOME_USER_NAME
|
||||
</code-example>
|
||||
|
||||
To generate a new random user ID, run the following command:
|
||||
|
||||
<code-example language="sh" class="code-shell">
|
||||
<code-example language="sh">
|
||||
ng config --global cli.analyticsSharing.user ""
|
||||
</code-example>
|
||||
|
||||
@@ -8,4 +8,4 @@ There is no injection token for a constructor parameter at compile time. [Inject
|
||||
@debugging
|
||||
Look at the parameter that throws the error and all uses of the class. This error is commonly thrown when a constructor defines parameters with primitive types like `string`, `number`, `boolean`, and `Object`.
|
||||
|
||||
Use the [@Injectable](api/core/Injectable) method or [@Inject](api/core/Inject) decorator from `@angular/core` to ensure that the type you are injecting is reified (has a runtime representation). Make sure to add a provider to this decorator so that you do not throw [NG0201: No Provider Found](errors/NG0201).
|
||||
Use the `@Injectable` method or `@Inject` decorator from `@angular/core` to ensure that the type you are injecting is reified (has a runtime representation). Make sure to add a provider to this decorator so that you do not throw [NG0201: No Provider Found](errors/NG0201).
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
@name Invalid metadata
|
||||
@category compiler
|
||||
@shortDescription Invalid @NgModule() metadata
|
||||
|
||||
@description
|
||||
This error represents the import or export of an `@NgModule()` that doesn't have valid metadata.
|
||||
|
||||
@debugging
|
||||
The library might have been processed with `ngcc`.
|
||||
If this is the case, try removing and reinstalling `node_modules`.
|
||||
This error is likely due to the library being published for Angular Ivy, which cannot be used in this View Engine application.
|
||||
If that is not the case then it might be a View Engine based library that was converted to Ivy by ngcc during a postinstall step.
|
||||
|
||||
Check the peer dependencies to ensure that you're using a compatible version of Angular.
|
||||
@@ -89,7 +89,7 @@ describe('AngularJS to Angular Quick Reference Tests', () => {
|
||||
return element.all(by.css('app-movie-list tbody > tr'));
|
||||
}
|
||||
|
||||
async function testFavoriteHero(heroName: string, expectedLabel: string) {
|
||||
async function testFavoriteHero(heroName: string | null, expectedLabel: string) {
|
||||
const movieListComp = element(by.tagName('app-movie-list'));
|
||||
const heroInput = movieListComp.element(by.tagName('input'));
|
||||
const favoriteHeroLabel = movieListComp.element(by.tagName('h3'));
|
||||
|
||||
@@ -16,7 +16,7 @@ export class AppComponent {
|
||||
eventType = '<not clicked yet>';
|
||||
isActive = true;
|
||||
isImportant = true;
|
||||
movie: IMovie = null;
|
||||
movie: IMovie;
|
||||
movies: IMovie[] = [];
|
||||
showImage = true;
|
||||
title = 'AngularJS to Angular Quick Ref Cookbook';
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
/* tslint:disable:no-unused-variable */
|
||||
// #docplaster
|
||||
import { Component } from '@angular/core';
|
||||
import { IMovie } from './movie';
|
||||
@@ -16,7 +15,7 @@ import { MovieService } from './movie.service';
|
||||
// #docregion class
|
||||
export class MovieListComponent {
|
||||
// #enddocregion class
|
||||
favoriteHero: string;
|
||||
favoriteHero: string | undefined;
|
||||
showImage = false;
|
||||
movies: IMovie[];
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ import { Hero } from './hero';
|
||||
// #enddocregion auto-calc
|
||||
})
|
||||
export class HeroListAutoComponent {
|
||||
@Input() heroes: Hero[];
|
||||
@Input() heroes: Hero[] = [];
|
||||
|
||||
@Output() remove = new EventEmitter<number>();
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ import { Hero } from './hero';
|
||||
// #enddocregion animationdef
|
||||
})
|
||||
export class HeroListEnterLeaveComponent {
|
||||
@Input() heroes: Hero[];
|
||||
@Input() heroes: Hero[] = [];
|
||||
|
||||
@Output() remove = new EventEmitter<number>();
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ import { Hero } from './hero';
|
||||
// #enddocregion animationdef
|
||||
})
|
||||
export class HeroListGroupsComponent {
|
||||
@Input() heroes: Hero[];
|
||||
@Input() heroes: Hero[] = [];
|
||||
|
||||
@Output() remove = new EventEmitter<number>();
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
import { Component, HostBinding, OnInit } from '@angular/core';
|
||||
import { trigger, transition, animate, style, query, stagger } from '@angular/animations';
|
||||
import { HEROES } from './mock-heroes';
|
||||
import { Hero } from './hero';
|
||||
|
||||
// #docregion filter-animations
|
||||
@Component({
|
||||
@@ -58,7 +59,7 @@ export class HeroListPageComponent implements OnInit {
|
||||
heroTotal = -1;
|
||||
// #enddocregion filter-animations
|
||||
get heroes() { return this._heroes; }
|
||||
private _heroes = [];
|
||||
private _heroes: Hero[] = [];
|
||||
|
||||
ngOnInit() {
|
||||
this._heroes = HEROES;
|
||||
|
||||
@@ -88,7 +88,7 @@ async function heroFromDetail(detail: ElementFinder): Promise<Hero> {
|
||||
// Get hero id from the first <div>
|
||||
const id = await detail.all(by.css('div')).first().getText();
|
||||
// Get name from the h2
|
||||
const name = await detail.element(by.css('h4')).getText();
|
||||
const name = await detail.element(by.css('app-hero-detail h2')).getText();
|
||||
return {
|
||||
id: +id.substr(id.indexOf(' ') + 1),
|
||||
name: name.substr(0, name.lastIndexOf(' ')),
|
||||
|
||||
@@ -5,6 +5,7 @@ import { Component } from '@angular/core';
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
template: `
|
||||
<h1>Architecture Example</h1>
|
||||
<app-hero-list></app-hero-list>
|
||||
<app-sales-tax></app-sales-tax>
|
||||
`
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<hr>
|
||||
<h4>{{hero.name}} Detail</h4>
|
||||
<h2>{{hero.name}} Detail</h2>
|
||||
<div>Id: {{hero.id}}</div>
|
||||
<label>Name:
|
||||
<!-- #docregion ngModel -->
|
||||
<input [(ngModel)]="hero.name">
|
||||
<!-- #enddocregion ngModel -->
|
||||
</label>
|
||||
<br />
|
||||
<label>Power: <input [(ngModel)]="hero.power"></label>
|
||||
<label for="hero-name">Name: </label>
|
||||
<!-- #docregion ngModel -->
|
||||
<input type="text" id="hero-name" [(ngModel)]="hero.name">
|
||||
<!-- #enddocregion ngModel -->
|
||||
|
||||
<label for="hero-power">Power: </label>
|
||||
<input type="text" for="hero-name" [(ngModel)]="hero.power">
|
||||
|
||||
@@ -7,5 +7,5 @@ import { Hero } from './hero';
|
||||
templateUrl: './hero-detail.component.html'
|
||||
})
|
||||
export class HeroDetailComponent {
|
||||
@Input() hero: Hero;
|
||||
@Input() hero!: Hero;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!-- #docregion -->
|
||||
<h2>Hero List</h2>
|
||||
|
||||
<p><i>Pick a hero from the list</i></p>
|
||||
<p><i>Select a hero from the list to see details.</i></p>
|
||||
<ul>
|
||||
<li *ngFor="let hero of heroes" (click)="selectHero(hero)">
|
||||
{{hero.name}}
|
||||
|
||||
@@ -13,8 +13,8 @@ import { HeroService } from './hero.service';
|
||||
// #docregion class
|
||||
export class HeroListComponent implements OnInit {
|
||||
// #enddocregion metadata
|
||||
heroes: Hero[];
|
||||
selectedHero: Hero;
|
||||
heroes: Hero[] = [];
|
||||
selectedHero: Hero | undefined;
|
||||
|
||||
// #docregion ctor
|
||||
constructor(private service: HeroService) { }
|
||||
|
||||
@@ -7,11 +7,12 @@ import { TaxRateService } from './tax-rate.service';
|
||||
selector: 'app-sales-tax',
|
||||
template: `
|
||||
<h2>Sales Tax Calculator</h2>
|
||||
<label>Amount: <input #amountBox (change)="0"></label>
|
||||
|
||||
<p><i>Enter a number and press enter to calculate tax.</i></p>
|
||||
<label for="amount-input">Amount: </label>
|
||||
<input type="text" id="amount-input" #amountBox (change)="0">
|
||||
<div *ngIf="amountBox.value">
|
||||
The sales tax is
|
||||
{{ getTax(amountBox.value) | currency:'USD':true:'1.2-2' }}
|
||||
<p>The sales tax is
|
||||
{{ getTax(amountBox.value) | currency:'USD':true:'1.2-2' }}</p>
|
||||
</div>
|
||||
`,
|
||||
providers: [SalesTaxService, TaxRateService]
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
ul {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
li {
|
||||
list-style-type: none;
|
||||
padding: 1rem;
|
||||
background-color: aliceblue;
|
||||
border: 1px solid #444;
|
||||
margin-bottom: .5rem;
|
||||
}
|
||||
|
||||
li:hover {
|
||||
background-color: #444;
|
||||
color: white;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
label {
|
||||
display: block;
|
||||
padding-bottom: .4rem;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
@@ -5,7 +5,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<base href="/">
|
||||
|
||||
<link rel="stylesheet" href="assets/architecture.css">
|
||||
</head>
|
||||
<body>
|
||||
<app-root></app-root>
|
||||
</body>
|
||||
|
||||
@@ -7,5 +7,5 @@ import { Component } from '@angular/core';
|
||||
})
|
||||
// #docregion class
|
||||
export class AppComponent {
|
||||
color: string;
|
||||
color = '';
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ export class HighlightDirective {
|
||||
}
|
||||
|
||||
@HostListener('mouseleave') onMouseLeave() {
|
||||
this.highlight(null);
|
||||
this.highlight('');
|
||||
}
|
||||
|
||||
private highlight(color: string) {
|
||||
|
||||
@@ -11,7 +11,7 @@ export class HighlightDirective {
|
||||
constructor(private el: ElementRef) { }
|
||||
|
||||
// #docregion input
|
||||
@Input() appHighlight: string;
|
||||
@Input() appHighlight = '';
|
||||
// #enddocregion input
|
||||
|
||||
@HostListener('mouseenter') onMouseEnter() {
|
||||
@@ -19,7 +19,7 @@ export class HighlightDirective {
|
||||
}
|
||||
|
||||
@HostListener('mouseleave') onMouseLeave() {
|
||||
this.highlight(null);
|
||||
this.highlight('');
|
||||
}
|
||||
|
||||
private highlight(color: string) {
|
||||
|
||||
@@ -9,10 +9,10 @@ export class HighlightDirective {
|
||||
constructor(private el: ElementRef) { }
|
||||
|
||||
// #docregion defaultColor
|
||||
@Input() defaultColor: string;
|
||||
@Input() defaultColor = '';
|
||||
// #enddocregion defaultColor
|
||||
|
||||
@Input('appHighlight') highlightColor: string;
|
||||
@Input('appHighlight') highlightColor = '';
|
||||
|
||||
// #docregion mouse-enter
|
||||
@HostListener('mouseenter') onMouseEnter() {
|
||||
@@ -21,7 +21,7 @@ export class HighlightDirective {
|
||||
// #enddocregion mouse-enter
|
||||
|
||||
@HostListener('mouseleave') onMouseLeave() {
|
||||
this.highlight(null);
|
||||
this.highlight('');
|
||||
}
|
||||
|
||||
private highlight(color: string) {
|
||||
|
||||
@@ -7,7 +7,7 @@ describe('Binding syntax e2e tests', () => {
|
||||
|
||||
|
||||
// helper function used to test what's logged to the console
|
||||
async function logChecker(contents) {
|
||||
async function logChecker(contents: string) {
|
||||
const logs = await browser.manage().logs().get(logging.Type.BROWSER);
|
||||
const messages = logs.filter(({ message }) => message.indexOf(contents) !== -1 ? true : false);
|
||||
expect(messages.length).toBeGreaterThan(0);
|
||||
|
||||
@@ -8,7 +8,7 @@ import { Component, ViewChild, ElementRef } from '@angular/core';
|
||||
})
|
||||
export class AppComponent {
|
||||
|
||||
@ViewChild('bindingInput') bindingInput: ElementRef;
|
||||
@ViewChild('bindingInput') bindingInput!: ElementRef;
|
||||
|
||||
isUnchanged = true;
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<p>Current item name: {{currentItem.name}}</p>
|
||||
<p>
|
||||
<label for="without">without NgModel:</label>
|
||||
<input [value]="currentItem.name" (input)="currentItem.name=getValue($event.target)" id="without">
|
||||
<input [value]="currentItem.name" (input)="currentItem.name=getValue($event)" id="without">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
||||
@@ -13,16 +13,16 @@ export class AppComponent implements OnInit {
|
||||
isUnchanged = true;
|
||||
|
||||
isActive = true;
|
||||
nullCustomer = null;
|
||||
nullCustomer: string | null = null;
|
||||
currentCustomer = {
|
||||
name: 'Laura'
|
||||
};
|
||||
|
||||
item: Item; // defined to demonstrate template context precedence
|
||||
items: Item[];
|
||||
item!: Item; // defined to demonstrate template context precedence
|
||||
items: Item[] = [];
|
||||
|
||||
// #docregion item
|
||||
currentItem: Item;
|
||||
currentItem!: Item;
|
||||
// #enddocregion item
|
||||
|
||||
|
||||
@@ -34,11 +34,11 @@ export class AppComponent implements OnInit {
|
||||
itemIdIncrement = 1;
|
||||
|
||||
// #docregion setClasses
|
||||
currentClasses: {};
|
||||
currentClasses: Record<string, boolean> = {};
|
||||
// #enddocregion setClasses
|
||||
|
||||
// #docregion setStyles
|
||||
currentStyles: {};
|
||||
currentStyles: Record<string, string> = {};
|
||||
// #enddocregion setStyles
|
||||
|
||||
ngOnInit() {
|
||||
@@ -114,8 +114,8 @@ export class AppComponent implements OnInit {
|
||||
|
||||
trackById(index: number, item: any): number { return item.id; }
|
||||
|
||||
getValue(target: EventTarget): string {
|
||||
return (target as HTMLInputElement).value;
|
||||
getValue(event: Event): string {
|
||||
return (event.target as HTMLInputElement).value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ import { Item } from '../item';
|
||||
export class ItemDetailComponent {
|
||||
|
||||
|
||||
@Input() item: Item;
|
||||
@Input() item!: Item;
|
||||
|
||||
constructor() { }
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import { Item } from './item';
|
||||
|
||||
// #docregion input
|
||||
export class StoutItemComponent {
|
||||
@Input() item: Item;
|
||||
@Input() item!: Item;
|
||||
}
|
||||
// #enddocregion input
|
||||
|
||||
@@ -18,7 +18,7 @@ export class StoutItemComponent {
|
||||
template: `This is the brightest {{item.name}} in town.`
|
||||
})
|
||||
export class BestItemComponent {
|
||||
@Input() item: Item;
|
||||
@Input() item!: Item;
|
||||
}
|
||||
|
||||
@Component({
|
||||
@@ -26,7 +26,7 @@ export class BestItemComponent {
|
||||
template: `Which is the slimmest {{item.name}}?`
|
||||
})
|
||||
export class DeviceItemComponent {
|
||||
@Input() item: Item;
|
||||
@Input() item!: Item;
|
||||
}
|
||||
|
||||
@Component({
|
||||
@@ -34,7 +34,7 @@ export class DeviceItemComponent {
|
||||
template: `Has anyone seen my {{item.name}}?`
|
||||
})
|
||||
export class LostItemComponent {
|
||||
@Input() item: Item;
|
||||
@Input() item!: Item;
|
||||
}
|
||||
|
||||
@Component({
|
||||
@@ -42,7 +42,7 @@ export class LostItemComponent {
|
||||
template: `{{message}}`
|
||||
})
|
||||
export class UnknownItemComponent {
|
||||
@Input() item: Item;
|
||||
@Input() item!: Item;
|
||||
get message() {
|
||||
return this.item && this.item.name ?
|
||||
`${this.item.name} is strange and mysterious.` :
|
||||
|
||||
@@ -3,7 +3,7 @@ export class Item {
|
||||
|
||||
static items: Item[] = [
|
||||
new Item(
|
||||
null,
|
||||
0,
|
||||
'Teapot',
|
||||
'stout'
|
||||
),
|
||||
@@ -15,7 +15,7 @@ export class Item {
|
||||
|
||||
|
||||
constructor(
|
||||
public id?: number,
|
||||
public id: number,
|
||||
public name?: string,
|
||||
public feature?: string,
|
||||
public url?: string,
|
||||
@@ -25,6 +25,6 @@ export class Item {
|
||||
}
|
||||
|
||||
clone(): Item {
|
||||
return Object.assign(new Item(), this);
|
||||
return Object.assign(new Item(this.id), this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,11 @@ import { docRegionChain, docRegionObservable, docRegionUnsubscribe } from './obs
|
||||
|
||||
describe('observables', () => {
|
||||
it('should print 2', (doneFn: DoneFn) => {
|
||||
const consoleLogSpy = spyOn(console, 'log');
|
||||
const observable = docRegionObservable(console);
|
||||
const consoleSpy = jasmine.createSpyObj<Console>('console', ['log']);
|
||||
const observable = docRegionObservable(consoleSpy);
|
||||
observable.subscribe(() => {
|
||||
expect(consoleLogSpy).toHaveBeenCalledTimes(1);
|
||||
expect(consoleLogSpy).toHaveBeenCalledWith(2);
|
||||
expect(consoleSpy.log).toHaveBeenCalledTimes(1);
|
||||
expect(consoleSpy.log).toHaveBeenCalledWith(2);
|
||||
doneFn();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -2,11 +2,11 @@ import { docRegionError, docRegionPromise } from './promises';
|
||||
|
||||
describe('promises', () => {
|
||||
it('should print 2', (doneFn: DoneFn) => {
|
||||
const consoleLogSpy = spyOn(console, 'log');
|
||||
const pr = docRegionPromise(console, 2);
|
||||
const consoleSpy = jasmine.createSpyObj<Console>('console', ['log']);
|
||||
const pr = docRegionPromise(consoleSpy, 2);
|
||||
pr.then((value) => {
|
||||
expect(consoleLogSpy).toHaveBeenCalledTimes(1);
|
||||
expect(consoleLogSpy).toHaveBeenCalledWith(2);
|
||||
expect(consoleSpy.log).toHaveBeenCalledTimes(1);
|
||||
expect(consoleSpy.log).toHaveBeenCalledWith(2);
|
||||
expect(value).toBe(4);
|
||||
doneFn();
|
||||
});
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
export function docRegionPromise(console: Console, inputValue: number) {
|
||||
// #docregion promise
|
||||
// initiate execution
|
||||
let promise = new Promise<number>((resolve, reject) => {
|
||||
let promise = new Promise<number>(resolve => {
|
||||
// Executer fn...
|
||||
// #enddocregion promise
|
||||
// The below is used in the unit tests.
|
||||
|
||||
@@ -18,7 +18,7 @@ import { Subscription } from 'rxjs';
|
||||
`
|
||||
})
|
||||
export class AstronautComponent implements OnDestroy {
|
||||
@Input() astronaut: string;
|
||||
@Input() astronaut = '';
|
||||
mission = '<no mission announced>';
|
||||
confirmed = false;
|
||||
announced = false;
|
||||
|
||||
@@ -40,7 +40,7 @@ export class CountdownLocalVarParentComponent { }
|
||||
export class CountdownViewChildParentComponent implements AfterViewInit {
|
||||
|
||||
@ViewChild(CountdownTimerComponent)
|
||||
private timerComponent: CountdownTimerComponent;
|
||||
private timerComponent!: CountdownTimerComponent;
|
||||
|
||||
seconds() { return 0; }
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import { Hero } from './hero';
|
||||
`
|
||||
})
|
||||
export class HeroChildComponent {
|
||||
@Input() hero: Hero;
|
||||
@Input('master') masterName: string; // tslint:disable-line: no-input-rename
|
||||
@Input() hero!: Hero;
|
||||
@Input('master') masterName = ''; // tslint:disable-line: no-input-rename
|
||||
}
|
||||
// #enddocregion
|
||||
|
||||
@@ -13,8 +13,8 @@ import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';
|
||||
`
|
||||
})
|
||||
export class VersionChildComponent implements OnChanges {
|
||||
@Input() major: number;
|
||||
@Input() minor: number;
|
||||
@Input() major = 0;
|
||||
@Input() minor = 0;
|
||||
changeLog: string[] = [];
|
||||
|
||||
ngOnChanges(changes: SimpleChanges) {
|
||||
|
||||
@@ -10,7 +10,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
|
||||
`
|
||||
})
|
||||
export class VoterComponent {
|
||||
@Input() name: string;
|
||||
@Input() name = '';
|
||||
@Output() voted = new EventEmitter<boolean>();
|
||||
didVote = false;
|
||||
|
||||
|
||||
@@ -12,5 +12,5 @@ import { Hero } from './hero';
|
||||
`
|
||||
})
|
||||
export class HeroAppMainComponent {
|
||||
@Input() hero: Hero;
|
||||
@Input() hero!: Hero;
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ import { Hero } from './hero';
|
||||
})
|
||||
// #enddocregion inlinestyles
|
||||
export class HeroControlsComponent {
|
||||
@Input() hero: Hero;
|
||||
@Input() hero!: Hero;
|
||||
|
||||
activate() {
|
||||
this.hero.active = true;
|
||||
|
||||
@@ -11,5 +11,5 @@ import { Hero } from './hero';
|
||||
styleUrls: ['./hero-details.component.css']
|
||||
})
|
||||
export class HeroDetailsComponent {
|
||||
@Input() hero: Hero;
|
||||
@Input() hero!: Hero;
|
||||
}
|
||||
|
||||
@@ -16,5 +16,5 @@ import { Hero } from './hero';
|
||||
})
|
||||
// #enddocregion stylelink
|
||||
export class HeroTeamComponent {
|
||||
@Input() hero: Hero;
|
||||
@Input() hero!: Hero;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
export class Hero {
|
||||
active: boolean;
|
||||
active = false;
|
||||
|
||||
constructor(public name: string,
|
||||
public team: string[]) {
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
import { browser, element, by } from 'protractor';
|
||||
|
||||
describe('Component Overview', () => {
|
||||
|
||||
beforeAll(() => browser.get(''));
|
||||
|
||||
it('should display Angular and Content Projection ', async () => {
|
||||
expect(await element(by.css('h2')).getText()).toEqual('Angular and Content Projection');
|
||||
});
|
||||
|
||||
});
|
||||
@@ -0,0 +1,3 @@
|
||||
p {
|
||||
font-family: Lato;
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
<h2>Angular and Content Projection</h2>
|
||||
|
||||
<!-- #docregion single-slot -->
|
||||
<app-zippy-basic>
|
||||
<p>Is content projection cool?</p>
|
||||
</app-zippy-basic>
|
||||
<!-- #enddocregion single-slot -->
|
||||
|
||||
<hr />
|
||||
|
||||
<!-- #docregion multi-slot -->
|
||||
<app-zippy-multislot>
|
||||
<p question>
|
||||
Is content projection cool?
|
||||
</p>
|
||||
<p>Let's learn about content projection!</p>
|
||||
</app-zippy-multislot>
|
||||
<!-- #enddocregion multi-slot -->
|
||||
|
||||
<hr />
|
||||
|
||||
<h2>Here's a zippy</h2>
|
||||
|
||||
<app-example-zippy>
|
||||
<button appExampleZippyToggle>Is content project cool?</button>
|
||||
<!-- #docregion ng-template-->
|
||||
<ng-template appExampleZippyContent>
|
||||
It depends on what you do with it.
|
||||
</ng-template>
|
||||
<!-- #enddocregion ng-template -->
|
||||
</app-example-zippy>
|
||||
|
||||
<hr />
|
||||
<app-zippy-ngprojectas>
|
||||
<p>Let's learn about content projection!</p>
|
||||
<!-- #docregion ngprojectas-->
|
||||
<ng-container ngProjectAs="question">
|
||||
<p>Is content projection cool?</p>
|
||||
</ng-container>
|
||||
<!-- #enddocregion-->
|
||||
</app-zippy-ngprojectas>
|
||||
@@ -0,0 +1,42 @@
|
||||
import { Component, Directive, Input, TemplateRef, ContentChild, HostBinding, HostListener } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
templateUrl: './app.component.html'
|
||||
})
|
||||
export class AppComponent {}
|
||||
|
||||
@Directive({
|
||||
selector: 'button[appExampleZippyToggle]',
|
||||
})
|
||||
export class ZippyToggleDirective {
|
||||
@HostBinding('attr.aria-expanded') ariaExpanded = this.zippy.expanded;
|
||||
@HostBinding('attr.aria-controls') ariaControls = this.zippy.contentId;
|
||||
@HostListener('click') toggleZippy() {
|
||||
this.zippy.expanded = !this.zippy.expanded;
|
||||
}
|
||||
constructor(public zippy: ZippyComponent) {}
|
||||
}
|
||||
|
||||
// #docregion zippycontentdirective
|
||||
@Directive({
|
||||
selector: '[appExampleZippyContent]'
|
||||
})
|
||||
export class ZippyContentDirective {
|
||||
constructor(public templateRef: TemplateRef<unknown>) {}
|
||||
}
|
||||
// #enddocregion zippycontentdirective
|
||||
|
||||
let nextId = 0;
|
||||
|
||||
@Component({
|
||||
selector: 'app-example-zippy',
|
||||
templateUrl: 'example-zippy.template.html',
|
||||
})
|
||||
export class ZippyComponent {
|
||||
contentId = `zippy-${nextId++}`;
|
||||
@Input() expanded = false;
|
||||
// #docregion contentchild
|
||||
@ContentChild(ZippyContentDirective) content!: ZippyContentDirective;
|
||||
// #enddocregion contentchild
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
|
||||
import {
|
||||
AppComponent,
|
||||
ZippyComponent,
|
||||
ZippyContentDirective,
|
||||
ZippyToggleDirective,
|
||||
} from './app.component';
|
||||
import { ZippyBasicComponent } from './zippy-basic/zippy-basic.component';
|
||||
import { ZippyMultislotComponent } from './zippy-multislot/zippy-multislot.component';
|
||||
import { ZippyNgprojectasComponent } from './zippy-ngprojectas/zippy-ngprojectas.component';
|
||||
|
||||
@NgModule({
|
||||
imports: [BrowserModule, FormsModule],
|
||||
declarations: [
|
||||
AppComponent,
|
||||
ZippyComponent,
|
||||
ZippyToggleDirective,
|
||||
ZippyContentDirective,
|
||||
ZippyBasicComponent,
|
||||
ZippyMultislotComponent,
|
||||
ZippyNgprojectasComponent,
|
||||
],
|
||||
bootstrap: [AppComponent]
|
||||
})
|
||||
export class AppModule {}
|
||||
@@ -0,0 +1,8 @@
|
||||
<ng-content></ng-content>
|
||||
<!-- #docregion ngif -->
|
||||
<div *ngIf="expanded" [id]="contentId">
|
||||
<!-- #docregion ng-container -->
|
||||
<ng-container [ngTemplateOutlet]="content.templateRef"> </ng-container>
|
||||
<!-- #enddocregion ng-container-->
|
||||
</div>
|
||||
<!-- #enddocregion ngif -->
|
||||
@@ -0,0 +1,10 @@
|
||||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-zippy-basic',
|
||||
template: `
|
||||
<h2>Single-slot content projection</h2>
|
||||
<ng-content></ng-content>
|
||||
`
|
||||
})
|
||||
export class ZippyBasicComponent {}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-zippy-multislot',
|
||||
template: `
|
||||
<h2>Multi-slot content projection</h2>
|
||||
<ng-content></ng-content>
|
||||
<ng-content select="[question]"></ng-content>
|
||||
`
|
||||
})
|
||||
export class ZippyMultislotComponent {}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-zippy-ngprojectas',
|
||||
template: `
|
||||
<h2>Content projection with ngProjectAs</h2>
|
||||
<ng-content></ng-content>
|
||||
<ng-content select="[question]"></ng-content>
|
||||
`
|
||||
})
|
||||
export class ZippyNgprojectasComponent {}
|
||||
@@ -0,0 +1,13 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>ContentProjection</title>
|
||||
<base href="/">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
||||
</head>
|
||||
<body>
|
||||
<app-root></app-root>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,12 @@
|
||||
import { enableProdMode } from '@angular/core';
|
||||
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
||||
|
||||
import { AppModule } from './app/app.module';
|
||||
import { environment } from './environments/environment';
|
||||
|
||||
if (environment.production) {
|
||||
enableProdMode();
|
||||
}
|
||||
|
||||
platformBrowserDynamic().bootstrapModule(AppModule)
|
||||
.catch(err => console.error(err));
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"description": "Binding Syntax",
|
||||
"files": [
|
||||
"!**/*.d.ts",
|
||||
"!**/*.js",
|
||||
"!**/*.[1,2].*"
|
||||
],
|
||||
"file": "src/app/app.component.ts",
|
||||
"tags": ["Binding Syntax"]
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { browser, element, by } from 'protractor';
|
||||
import { browser, element, by, ElementFinder } from 'protractor';
|
||||
|
||||
describe('Dependency Injection Cookbook', () => {
|
||||
|
||||
@@ -19,7 +19,7 @@ describe('Dependency Injection Cookbook', () => {
|
||||
expect(await sortedHeroes.isPresent()).toBe(true);
|
||||
|
||||
const sortedHeroElems = element.all(by.css('app-sorted-heroes div'));
|
||||
const sortedHeroNames = await sortedHeroElems.map(elem => elem.getText());
|
||||
const sortedHeroNames = await sortedHeroElems.map(elem => elem?.getText());
|
||||
expect(sortedHeroNames).toEqual(['Dr Nice', 'Magma', 'RubberMan']);
|
||||
});
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ import { HeroCacheService } from './hero-cache.service';
|
||||
})
|
||||
|
||||
export class HeroBioComponent implements OnInit {
|
||||
@Input() heroId: number;
|
||||
@Input() heroId = 0;
|
||||
|
||||
constructor(private heroCache: HeroCacheService) { }
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import { HeroService } from './hero.service';
|
||||
// #docregion service
|
||||
@Injectable()
|
||||
export class HeroCacheService {
|
||||
hero: Hero;
|
||||
hero!: Hero;
|
||||
constructor(private heroService: HeroService) {}
|
||||
|
||||
fetchCachedHero(id: number) {
|
||||
|
||||
@@ -15,7 +15,7 @@ export class HeroService {
|
||||
];
|
||||
|
||||
getHeroById(id: number): Hero {
|
||||
return this.heroes.find(hero => hero.id === id);
|
||||
return this.heroes.find(hero => hero.id === id)!;
|
||||
}
|
||||
|
||||
getAllHeroes(): Array<Hero> {
|
||||
|
||||
@@ -7,7 +7,7 @@ import { Directive, ElementRef, HostListener, Input } from '@angular/core';
|
||||
})
|
||||
export class HighlightDirective {
|
||||
|
||||
@Input('appHighlight') highlightColor: string;
|
||||
@Input('appHighlight') highlightColor = '';
|
||||
|
||||
private el: HTMLElement;
|
||||
|
||||
@@ -20,7 +20,7 @@ export class HighlightDirective {
|
||||
}
|
||||
|
||||
@HostListener('mouseleave') onMouseLeave() {
|
||||
this.highlight(null);
|
||||
this.highlight('');
|
||||
}
|
||||
|
||||
private highlight(color: string) {
|
||||
|
||||
+2
-2
@@ -2,8 +2,8 @@
|
||||
// Class used as a "narrowing" interface that exposes a minimal logger
|
||||
// Other members of the actual implementation are invisible
|
||||
export abstract class MinimalLogger {
|
||||
logs: string[];
|
||||
logInfo: (msg: string) => void;
|
||||
abstract logs: string[];
|
||||
abstract logInfo: (msg: string) => void;
|
||||
}
|
||||
// #enddocregion
|
||||
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ export abstract class Base { name = 'Count Basie'; }
|
||||
|
||||
// Marker class, used as an interface
|
||||
// #docregion parent
|
||||
export abstract class Parent { name: string; }
|
||||
export abstract class Parent { abstract name: string; }
|
||||
// #enddocregion parent
|
||||
|
||||
const DifferentParent = Parent;
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ import { HeroService } from './hero.service';
|
||||
export class HeroesBaseComponent implements OnInit {
|
||||
constructor(private heroService: HeroService) { }
|
||||
|
||||
heroes: Array<Hero>;
|
||||
heroes: Hero[] = [];
|
||||
|
||||
ngOnInit() {
|
||||
this.heroes = this.heroService.getAllHeroes();
|
||||
|
||||
@@ -7,8 +7,8 @@ import { UserService } from './user.service';
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class UserContextService {
|
||||
name: string;
|
||||
role: string;
|
||||
name = '';
|
||||
role = '';
|
||||
loggedInSince: Date;
|
||||
|
||||
constructor(private userService: UserService, private loggerService: LoggerService) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// #docplaster
|
||||
// #docregion
|
||||
import { Component, Injector, OnInit } from '@angular/core';
|
||||
import { Component, Injector } from '@angular/core';
|
||||
|
||||
import { Car, Engine, Tires } from './car/car';
|
||||
import { Hero } from './heroes/hero';
|
||||
@@ -18,7 +18,7 @@ import { Logger } from './logger.service';
|
||||
`,
|
||||
providers: [Car, Engine, Tires, heroServiceProvider, Logger]
|
||||
})
|
||||
export class InjectorComponent implements OnInit {
|
||||
export class InjectorComponent {
|
||||
car: Car;
|
||||
|
||||
// #docregion get-hero-service
|
||||
@@ -26,9 +26,7 @@ export class InjectorComponent implements OnInit {
|
||||
// #enddocregion get-hero-service
|
||||
hero: Hero;
|
||||
|
||||
constructor(private injector: Injector) { }
|
||||
|
||||
ngOnInit() {
|
||||
constructor(private injector: Injector) {
|
||||
this.car = this.injector.get(Car);
|
||||
this.heroService = this.injector.get(HeroService);
|
||||
this.hero = this.heroService.getHeroes()[0];
|
||||
|
||||
@@ -210,7 +210,7 @@ export class Provider8Component {
|
||||
// #enddocregion providers-9
|
||||
})
|
||||
export class Provider9Component implements OnInit {
|
||||
log: string;
|
||||
log = '';
|
||||
/*
|
||||
// #docregion provider-9-ctor-interface
|
||||
// Can't inject using the interface as the parameter type
|
||||
@@ -237,7 +237,7 @@ const someMessage = 'Hello from the injected logger';
|
||||
providers: [{ provide: Logger, useValue: null }]
|
||||
})
|
||||
export class Provider10Component implements OnInit {
|
||||
log: string;
|
||||
log = '';
|
||||
constructor(@Optional() private logger?: Logger) {
|
||||
if (this.logger) {
|
||||
this.logger.log(someMessage);
|
||||
|
||||
@@ -13,7 +13,7 @@ export class AppComponent {
|
||||
// #enddocregion class-skeleton
|
||||
title = 'Authors Style Guide Sample';
|
||||
heroes = HEROES;
|
||||
selectedHero: Hero;
|
||||
selectedHero!: Hero;
|
||||
|
||||
onSelect(hero: Hero): void {
|
||||
this.selectedHero = hero;
|
||||
|
||||
@@ -18,9 +18,9 @@ import { AdComponent } from './ad.component';
|
||||
})
|
||||
// #docregion class
|
||||
export class AdBannerComponent implements OnInit, OnDestroy {
|
||||
@Input() ads: AdItem[];
|
||||
@Input() ads: AdItem[] = [];
|
||||
currentAdIndex = -1;
|
||||
@ViewChild(AdDirective, {static: true}) adHost: AdDirective;
|
||||
@ViewChild(AdDirective, {static: true}) adHost!: AdDirective;
|
||||
interval: any;
|
||||
|
||||
constructor(private componentFactoryResolver: ComponentFactoryResolver) { }
|
||||
|
||||
@@ -13,7 +13,7 @@ import { AdItem } from './ad-item';
|
||||
`
|
||||
})
|
||||
export class AppComponent implements OnInit {
|
||||
ads: AdItem[];
|
||||
ads: AdItem[] = [];
|
||||
|
||||
constructor(private adService: AdService) {}
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ import { QuestionBase } from './question-base';
|
||||
templateUrl: './dynamic-form-question.component.html'
|
||||
})
|
||||
export class DynamicFormQuestionComponent {
|
||||
@Input() question: QuestionBase<string>;
|
||||
@Input() form: FormGroup;
|
||||
@Input() question!: QuestionBase<string>;
|
||||
@Input() form!: FormGroup;
|
||||
get isValid() { return this.form.controls[this.question.key].valid; }
|
||||
}
|
||||
|
||||
@@ -12,14 +12,14 @@ import { QuestionControlService } from './question-control.service';
|
||||
})
|
||||
export class DynamicFormComponent implements OnInit {
|
||||
|
||||
@Input() questions: QuestionBase<string>[] = [];
|
||||
form: FormGroup;
|
||||
@Input() questions: QuestionBase<string>[] | null = [];
|
||||
form!: FormGroup;
|
||||
payLoad = '';
|
||||
|
||||
constructor(private qcs: QuestionControlService) { }
|
||||
constructor(private qcs: QuestionControlService) {}
|
||||
|
||||
ngOnInit() {
|
||||
this.form = this.qcs.toFormGroup(this.questions);
|
||||
this.form = this.qcs.toFormGroup(this.questions as QuestionBase<string>[]);
|
||||
}
|
||||
|
||||
onSubmit() {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// #docregion
|
||||
export class QuestionBase<T> {
|
||||
value: T;
|
||||
value: T|undefined;
|
||||
key: string;
|
||||
label: string;
|
||||
required: boolean;
|
||||
|
||||
@@ -47,7 +47,7 @@ export class PopupComponent {
|
||||
this._message = message;
|
||||
this.state = 'opened';
|
||||
}
|
||||
private _message: string;
|
||||
private _message = '';
|
||||
|
||||
@Output()
|
||||
closed = new EventEmitter();
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
<!-- #docregion event-binding-3-->
|
||||
<input [value]="currentItem.name"
|
||||
(input)="currentItem.name=getValue($event.target)">
|
||||
(input)="currentItem.name=getValue($event)">
|
||||
<!-- #enddocregion event-binding-3-->
|
||||
without NgModel
|
||||
</div>
|
||||
|
||||
@@ -27,8 +27,8 @@ export class AppComponent {
|
||||
}
|
||||
|
||||
// #docregion getValue
|
||||
getValue(target: EventTarget): string {
|
||||
return (target as HTMLInputElement).value;
|
||||
getValue(event: Event): string {
|
||||
return (event.target as HTMLInputElement).value;
|
||||
}
|
||||
// #enddocregion getValue
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user