With the release of Yarn 2.0, many users may be interested in trying out the new version of the package manager with the Angular CLI. As of 9.0, the Angular CLI does not natively support Yarn 2.0 and its new package management strategy named Plug鈥檔鈥橮lay (PnP). However, native support is currently and actively being investigated with several initial steps already in place. Native support is tentatively scheduled for inclusion in 10.0 or beyond with the goal of integrating new major versions of upstream dependencies that provide native support.
For those that are interested in experimenting with building applications using the new package manager, you can use the following instructions to workaround the current issues.
WARNING:  This is not recommended for use with deployed applications and should not be used in a production environment.
1) Install the workspace dependencies using Yarn 2.0
2) Install the pnpify package: yarn add -D @yarnpkg/pnpify
3) Unplug all Angular related packages including third-party libraries used within the application via yarn unplug <package_name>.  This should include at a minimum all @angular scoped packages.
4) If using the E2E command, the webdriver-manager package also needs to be unplugged: yarn unplug webdriver-manager
Once these steps are complete, Angular CLI operations such as serve or build can be used by executing yarn pnpify ng build or yarn pnpify ng serve, respectively.
Please note that manually running the ngcc command with or without the pnpify utility does not currently work.
If any issues are encountered using the workaround steps or for Yarn 2.0 in general, please open a separate issue detailing the problem.
Another way of making Angular 9 work with Yarn 2.0 is to use nodeLinker: node-modules in <project_root>/.yarnrc.yml, this will use node_modules scheme for installation. 
Yarn team is investing into node_modules support and trying to make it work better than it was in Yarn 1.x, but the future is definitely not with node_modules. node_modules scheme has fundamental technical limitations that makes it not as scalable as Plug'n'Play scheme both in terms of projects size (things become extremely slow on projects with lots of dependencies) and in terms of features we can attach to the scheme (it is hard to keep up with good installation performance even for minimal set of features).
Some possibly relevant information regarding improving yarn 2.0 support:
https://github.com/angular/angular-cli/issues/14841#issuecomment-590776160
Replacing read-package-tree with a createRequire implementation might be a first step in that direction. The comment above links to a PR in gatsby where they did something similar. 
I noticed that @clydin authored most of the code in that file, perhaps #14841 could be fixed in the process as well.
How does 2.1 with node_modules linker improvements impact this issue?
https://dev.to/arcanis/yarn-2-1-git-workspaces-focused-installs-loose-mode-live-playground-4kfc
With nodeLinker configured to node_modules I was able to migrate a small Angular CLI project without a single issue, with zero installs configuration even.
I'm not suggesting it would be trivial to fix this and have it automatically work the way yarn 2 works by default out of box, in addition to continuing to support NPM... but I would say this would probably go a long ways to improve developer experience.
Can't wait until node_modules (at least the way it works today) is a thing of the past.
There is ongoing work right now in @angular core packages to rework things in a way that would allow Yarn2+PnP to work natively. 
You can read more and track the progress here: https://github.com/angular/angular/issues/38099
Most helpful comment
I'm not suggesting it would be trivial to fix this and have it automatically work the way yarn 2 works by default out of box, in addition to continuing to support NPM... but I would say this would probably go a long ways to improve developer experience.
Can't wait until node_modules (at least the way it works today) is a thing of the past.