The onStart method of a partial is executed before the components of a partial have been run (see Partials - October CMS - 4.x)
So if you place the collection component in your partial, use the onEnd method to process the announcement. Alternatively, you can also execute queries on collections directly in the page:
I usually expose the data of a component through public variables and access them via the component. Either with the alias / __SELF__ inside component partials or accessing the component through the page if dealing with a page. I try to scope variables as much as possible, to be able to add a component multiple times (don’t need it as much, but it’s easier for me to just do it always like that).
I sprinkled in some other code - like checking if the current site visitor is authenticated in the backend and then load drafts, render the annoucements with a macro - to show the flexiblity and how I usually like to do stuff like that.
And yes, in this case I still use a variable injected to the partial, but it is scoped to the partial (not accessible in the page). And I usualy prefix variable names with something, just to make the chance smaller that it gets overriden. That basically never happens, but it is the most annoying and debug-hours-wasting thing if it does.
And I just realised, that my initial reply and code suggestion was sloppy and incomplete. Sorry for that!